1

私はJavaアプリケーションを持っています。この問題は、jmap を使用してヒープを取得し、アプリケーションでこのコードを実行することもできます。両方とも異なる値を与えています。ランタイムは256mb、初期および最大メモリとして割り当てたものを示していますか? メモリリークがあるかどうかを検出したいのですが、ランタイムは変動していますが、ヒープからのものは少しずつ増加していますか? これについて何か助けはありますか?

long memory = runtime.totalMemory() - runtime.freeMemory();
System.out.println("\n\nUsed memory is bytes: " + memory);

//Print the jvm heap size.
long heapSize = runtime.totalMemory();
System.out.println("\n\nHeap Size = " + heapSize);

int mb = 1024*1024;
System.out.println("##### Heap utilization statistics [MB] #####");

//Print used memory
System.out.println("Used Memory:" + (runtime.totalMemory() - runtime.freeMemory()) / mb);

//Print free memory
System.out.println("Free Memory:" + runtime.freeMemory() / mb);

//Print total available memory
System.out.println("Total Memory:" + runtime.totalMemory() / mb);

//Print Maximum available memory
System.out.println("Max Memory:" + runtime.maxMemory() / mb);
4

2 に答える 2

1

Visual VMを使用してメモリ使用量などを監視することをお勧めします。

于 2013-08-27T02:34:55.710 に答える