[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:01091] Cylinderなどを繰り返しnewしたときのメモリー増加について
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■ アイルトン・セナ財団公認 没後5周年メモリアルポスター ■■
■■ 全世界999セット限定発売中!!!! ■■
■■ ■■
■■ ■■
■■ http://www.idxconet.co.jp/senna_bleu.html ■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
はじめまして、大金と申します。
TransformGroupにNodeを付け加えたり、削除したりを
繰り返す必要があるのですが、
その際、メモリー使用量が増加してしまいます。
調べてみた結果、com.sun.j3d.utils.geometryにあるBoxを何度もnewすると
メモリーの使用量増加はある程度でとまるのですが、
Cylinder, Cone, Sphereだと、どんどん増えてしまいます。
(実際に試してみたときのソースを最後につけておきます)
Boxとそれ以外でなぜこのような違いが生じてしまうのでしょう?
これは、仕方のないことなのでしょうか。
それとも、曲線が絡んでいる場合は
何かほかにやらなければならないことがあるのでしょうか。
アドバイスをお願いいたします。
開発環境: WindowsNT
JDK 1.2.1
Java3D 1.1.2 SDK (OpenGL version)
---------------------------------------------------------------------------
import com.sun.j3d.utils.geometry.*;
class MemorySize {
MemorySize() {
}
public void start() {
int roop = 1000;
for(int count=0; count<roop; count++) {
PrintMem();
Box aBox = new Box();
//Cylinder aCylinder = new Cylinder();
//Cone aCone = new Cone();
//Sphere aSphere = new Sphere();
PrintMem();
System.gc();
PrintMem();
}
}
static void PrintMem() {
Runtime runtime = Runtime.getRuntime();
long free = runtime.freeMemory();
long total = runtime.totalMemory();
long use = total - free;
System.err.println("free: " + free + "\ttotal: " + total +
"\tuse: " + use );
}
public static void main(String args[]) {
MemorySize aMemorySize = new MemorySize();
aMemorySize.start();
}
}
------------------------------------------------------------------------
明治大学理工学部 機械工学科ロボット工学研究室
大金 郁郎
ioogane@xxxxxxxxxx
------------------------------------------------------------------------