私はかなり前からフラクタル軌道を生成するJavaプログラムに取り組んできました。写真と同じように、画像が大きいほど、縮小したときの画像が良くなります。プログラムは、ポイントの値が計算されるときに書き込まれる2Dオブジェクト(ポイント)配列を使用します。つまり、ポイントは対応する値に格納されます。つまり、次のようになります。
Point p = new Point(25,30);
histogram[25][30] = p;
もちろん、これは簡単にするために編集されています。ポイント値をCSVに書き込んで、後でラスターに適用することもできますが、同様の方法を使用すると、望ましくない結果が生じます。この配列を持たないことで、スペースを空けてより大きな画像を作成できることを楽しんだので、かなり長い間試しました。それはうまくいきません。わかりやすくするために、Pointオブジェクトにはカラーデータも格納されることを付け加えておきます。
次の問題はWriteableRasterで、これは配列と同じ次元になります。この2つを組み合わせると、大量のメモリが消費されます。私はこれを受け入れるようになりました。それが何度か行われる方法を変えようとした後、それぞれがより低い品質の結果をもたらしました。
メモリと時間を最適化しようとした後、私は本当にRAMによって制限されているという結論に達しました。これが私が変えたいものです。-Xmxスイッチ(10GBに設定)を認識しています。Windowsの仮想メモリを使用してラスターや配列を保存する方法はありますか?これがパフォーマンスに大きな打撃を与えることはよく知っていますが、品質を下げる代わりに、実際には多くの選択肢がないようです。