私はKoch fractal snowflakeをJavaで実行していて、それをsvgファイルに保存しています。フラクタルと "java.lang.OutOfMemoryError:Java heap space"
私はLineStrip2Dクラス(iterableを実装するVec2DのArrayListのラッパー)でフラクタルを覚えています。
主な機能は、このいずれかになります。
public static LineStrip2D repeatPatternIntoLineStrip2D(
LineStrip2D pattern,
LineStrip2D polygon,
boolean repeatUp) {
/*
* pattern: must be a pattern between Vec(0,0) and Vec(1,0)
* (normalized beetween 0-1 and in X axis)
* */
float angle, distance;
Vec2D pivot, a, b, direction, b1;
LineStrip2D new_polygon = new LineStrip2D();
new_polygon.add(pattern.vertices.get(0));
a = polygon.vertices.get(0);
int count=0;
for (int i = 1; i < polygon.vertices.size(); i++) {
b = polygon.vertices.get(i);
a = polygon.vertices.get(i-1);
distance = b.distanceTo(a);
direction = b.sub(a).normalize();
angle = PApplet.atan2(direction.y, direction.x);
pivot = a;
for (int j = 1; j < pattern.vertices.size(); j++) {
Vec2D _b1 = pattern.vertices.get(j);
b1 = _b1.copy() ;
if(repeatUp)b1.y *= -1;
b1.scaleSelf(distance);
b1 = b1.rotate(angle);
b1.addSelf(pivot);
new_polygon.add(b1);
count++;
}
a = b;
}
System.out.println(count);
return new_polygon;
}
私は、最初のコッホ曲線のパターンがあります。
をと私は呼ん:今すぐ
pattern = GeometryHelper.repeatPatternIntoLineStrip2D(pattern, pattern, false);
問題:
いくつかの反復の後(851968)、私はjava.lang.OutOfMemoryError:Javaヒープスペースを持っています。 このエラーを回避して、巨大なsvgファイルを作成するにはどうすればよいですか? 私はさまざまな手順でこのプロセスを実行できると思いますが、スマートな方法で実装する方法はわかりません。
私は、1つの変数を削除するとヒープサイズの問題が解決されるとは思えません。 –
私はちょうど彼が彼のコードでいくつかの役に立たない操作を持っているという事実を指摘しています –
@ Jason482:+ 1に対抗する+1:答えは正しい、有用かもしれない追加情報を含んでいて、答え(他のものより少し細かくはあるが)。 downvote、IMHOの価値がない。 – Mac