我在BlueJ中运行了几个Java程序。我希望能够知道程序对给定输入值使用了多少内存。我有什么方法可以做到这一点吗?
答案 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}}函数),您可能会感兴趣在当前OpenCV的virtual 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,因此定义内存使用量到底是多么微不足道。