2011-12-19 45 views
3

可能重复:
Read Java JVM startup parameters (eg -Xmx)如何获得编程访问权限来检查-Xms -Xmx和-XX:MaxPermSize JVM参数值?

我运行一个Tomcat服务器上的应用程序,我想访问-Xms -Xmx-XX:MaxPermSize JVM参数值的值,这样我可以记录他们的调试帮助。

我试图找到这些参数列在System.properties,并使用System.getEnv(),但他们不存在。是否有另一种方法来获取它们,或者,也可以通过System.propertiesSystem.getEnv()表示这些选项尚未设置?

+0

这是一个有益的解决方案,尽管下面列出的Runtime.totalMemory()想法是一个很好的补充,因为它在-Xms未设置的情况下很有用,但您仍然想要了解默认情况下有多少内存以我的问题为例)。 – 2011-12-19 17:40:40

+0

为什么编程?它在Tomcat配置中设置。只需在每次启动时复制即可。 – EJP 2011-12-19 23:22:28

+0

因为我不控制服务器,也无法访问Tomcat配置,而无需跟踪和打扰系统管理员。 – 2011-12-20 16:23:10

回答

2

怎么样Runtime.totalMemory()(当然如果你有权限,或者安全被禁用)?

另一个解决方法是搜索已启动tomcat并解析它的命令行。在linux很容易,但在Windows ...

+0

这是用于Xms。对于Xmx,可以使用'Runtime.getRuntime()。maxMemory()'。 – John29 2018-01-11 18:30:11

4

您可以从运行时类获得基本信息,包括总计,最大值和可用内存;具体请参阅Runtime JavaDoc

如果这些信息不足,则可以使用管理扩展获取有关每个内存池中当前和峰值内存使用情况的更多信息。您可以使用Oracle JDK附带的JConsole上的MBeans选项卡浏览正在运行的JVM的所有可用信息。具体而言,请查看对象名称为java.lang:type=Memoryjava.lang:type=MemoryPool,name=*的MBean。

一旦您用所需信息确定了MBean,就可以使用ManagementFactory类以编程方式访问它们。这使得通用接入到所有MBean(你可以让你自己),但方便的方法对一些平台所提供的MBean,包括: