所以我有这段代码:
public class TestClass {
public static void main(String[] args) throws InterruptedException {
Runtime runtime = Runtime.getRuntime();
ArrayList<Integer> integers = new ArrayList<Integer>();
integers.ensureCapacity(Integer.MAX_VALUE/5);
System.out.println(runtime.totalMemory()/1000000);
Thread.sleep(10000);
}
}
为我打印1975年左右的东西。
但与此同时我正在观看Mac Os中的Activity Monitor,它说Java进程正在使用1.62Gib
为何与众不同?
答案 0 :(得分:0)
您的程序只显示您的小程序的JVM的内存。其他程序使用自己的JVM和自己的内存。只有像OpenCL这样的特殊本机库才能完全可视化。
对于内存分析,请使用Java VisualVM(./bin(java的安装文件夹)或http://visualvm.java.net/中的JDK 1.7或更高版本)。 有一个运行JVM及其内存使用情况的具体列表。您可以执行堆转储并查看什么对象使用了多少内存。