如何查找程序使用的内存量?

时间:2017-10-12 16:30:26

标签: memory bluej

我在BlueJ中运行了几个Java程序。我希望能够知道程序对给定输入值使用了多少内存。我有什么方法可以做到这一点吗?

2 个答案:

答案 0 :(得分:1)

1)获取Java应用程序可以使用的最大内存量Runtime

Runtime runtime = Runtime.getRuntime(); 
System.out.println("max memory: " + runtime.maxMemory() / 1024); 

2)获取JVM为您的应用程序分配的内存量:

Runtime runtime = Runtime.getRuntime(); 
System.out.println("allocated memory: " + runtime.totalMemory() / 1024); 

3)获取应用程序使用的内存量:

Runtime runtime = Runtime.getRuntime(); 
System.out.println("free memory: " + runtime.freeMemory() / 1024); 

答案 1 :(得分:0)

可能 operating system具体;值得注意的是JVM管理Java分配的内存,但您可以使用JNI调用C ++中的外部函数,它们也分配内存(例如,您的Java程序调用{​​{3}}函数),您可能会感兴趣在当前OpenCVvirtual address space中。在Linux上,您可以使用process并阅读并解析/proc/self/statm/proc/self/stat/proc/self/status。如果您的流程有pid 1234,您也可以尝试cat /proc/1234/maps ijn其他终端,或使用proc(5)。在其他操作系统上,您需要深入了解其相应的文档。

如果您只关心JVM直接使用的内存,请使用pmap(1)作为Runtime class

顺便说一句,你的JVM有一个answered by Hans,因此定义内存使用量到底是多么微不足道。