可能是重复问题:
阅读Java JVM启动参数(例如-Xmx)
我正在Tomcat服务器上运行应用程序,并希望访问-Xms -Xmx
和-XX:MaxPermSize
JVM参数值,以便我可以记录它们以帮助调试。
我尝试在System.properties
中查找这些参数,并使用System.getEnv()
,但它们不在那里。是否有另一种方法来获取它们,或者,替代地,它们不在System.properties
和System.getEnv()
中的缺乏表示这些选项未被设置?
可能是重复问题:
阅读Java JVM启动参数(例如-Xmx)
我正在Tomcat服务器上运行应用程序,并希望访问-Xms -Xmx
和-XX:MaxPermSize
JVM参数值,以便我可以记录它们以帮助调试。
我尝试在System.properties
中查找这些参数,并使用System.getEnv()
,但它们不在那里。是否有另一种方法来获取它们,或者,替代地,它们不在System.properties
和System.getEnv()
中的缺乏表示这些选项未被设置?
如果您拥有权限,或安全性被禁用,可以尝试使用 Runtime.totalMemory() 方法。
另一种解决方法是查找启动tomcat的命令行并解析它。在Linux中很容易实现,但在Windows中可能较为困难。
Runtime.getRuntime().maxMemory()
。 - John29您可以从Runtime类获取基本信息,包括总内存、最大内存和可用内存;有关详细信息,请参阅Runtime JavaDoc。
如果这不足够,您可以使用管理扩展程序获取更多有关每个内存池当前和峰值内存使用情况的信息。您可以使用随Oracle JDK一起提供的JConsole上的MBeans选项卡浏览运行中JVM的所有可用信息。具体来说,请查看对象名称为java.lang:type=Memory
和java.lang:type=MemoryPool,name=*
的MBeans。
一旦您确定了需要的信息的MBeans,就可以使用ManagementFactory类以编程方式访问它们。这允许对所有MBeans进行通用访问(您可以创建自己的MBeans),但是对于平台提供的一些MBeans具有方便的方法。