我正在通过命令行运行我的Java应用程序,没有传递任何JVM设置(即java -cp some.jar)。 VisualVM显示Java应用程序分配了约740M的堆空间。 由于我没有传递任何JVM设置,如何查看我的应用程序正在使用哪些JVM设置?
您可以使用java.lang.management.MemoryUsage:MemoryUsage mu = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage(); 并从中获取最大内存
我会使用性能分析工具来分析内存。如果您知道有多少内存被使用,问题并没有解决。下一步是要知道为什么使用了这么多内存。请尝试使用Java Mission Control对您的程序进行分析。该工具是任何较新JDK的一部分,例如: “C:\ Program Files(x86)\ Java \ jdk1.8.0_20 \ bin \ jmc.exe”
jps -lvm
只显示被传递的显式参数,它没有显示 JVM 为应用程序设置的Xmx
。 - GlideXmx
,JVM将分配多少堆空间是否有限制? - Glide