2017-10-12 41 views
0

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

+0

你的问题可能与BlueJ无关。您可以使用其他IDE(或Java编译器)。所以我想你需要删除'bluej'标签 –

回答

1

1),以获得您的Java应用程序可以使用Runtime的最大内存量:多少内存JVM已经分配给您的应用程序

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

2)获得:

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

这只适用于通过Java分配的内存 –

+0

对于第一个答案Nod不好。为了您未来的答案:适当地格式化代码(用四个空格缩进),并且可能链接到相关文档 –

0

它可能是operating system特定;值得注意的是JVM管理Java分配的内存,但您可能使用JNI(也就是您的Java程序调用OpenCV函数)使用JNI调用C++中的外部函数,并且您可能对当前的processvirtual address space感兴趣。在Linux上,您可以使用proc(5)并阅读并解析/proc/self/statm/proc/self/stat/proc/self/status。如果你的进程有pid 1234,你也可以在另一个终端上尝试cat /proc/1234/maps,或者使用pmap(1)。在其他操作系统上,您需要深入了解相应的文档。

如果您只关心JVM直接使用的内存,请使用Runtime class作为answered by Hans

顺便说一句,你的JVM有一个garbage collector,所以定义确切的内存使用量不是微不足道的。

相关问题