我目前正在运行以下代码,这表明我的 java 应用程序正在使用近 5mb 的内存。但是我的 mac 的活动监视器说它使用 185 mb。额外的内存在哪里使用?即使我的应用程序处于空闲状态,我消耗的内存也在不断增加,从 5 mb 上升到 7 mb。
还有任何java类可以让我观察堆上的最新对象(所有对象分别)以及运行时的内存消耗吗?
package profiling;
public class MemConsumption {
public static void profiling() {
Runtime runtime = Runtime.getRuntime();
long memory = runtime.totalMemory() - runtime.freeMemory();
System.out.println("Used memory is bytes: " + memory);
System.out.println("Used memory is megabytes: "
+ bytesToMegabytes(memory));
}
public static long bytesToMegabytes(long bytes) {
final long MEGABYTE = 1024L * 1024L;//1024 kb of 1024 bytes
return bytes / MEGABYTE;
}
}