如何从Java进程中确定有效的Java内存参数?
我通常通过在IntelliJ IDEA中启动WebLogic进程来调试我的应用程序。这两种应用程序都提供了向Java命令行指定可选内存参数的方法(例如,-Xms1024m-Xmx2560m-XX:PermSize=1024m等),还有各种环境变量(例如,Java_选项)也可能发挥作用 我如何确定这些指定选项中的哪一个是“赢的”,即从Java进程内部,我如何找到强加给Java进程的内存规范?我看到的所有系统属性似乎都没有显示它们。如果使用jconsole(java jdk附带)连接到Web服务器:如何从Java进程中确定有效的Java内存参数?,java,intellij-idea,weblogic-10.x,Java,Intellij Idea,Weblogic 10.x,我通常通过在IntelliJ IDEA中启动WebLogic进程来调试我的应用程序。这两种应用程序都提供了向Java命令行指定可选内存参数的方法(例如,-Xms1024m-Xmx2560m-XX:PermSize=1024m等),还有各种环境变量(例如,Java_选项)也可能发挥作用 我如何确定这些指定选项中的哪一个是“赢的”,即从Java进程内部,我如何找到强加给Java进程的内存规范?我看到的所有系统属性似乎都没有显示它们。如果使用jconsole(java jdk附带)连接到Web服务器:
jconsole <pid>
jconsole
您可以转到VM摘要选项卡以查看传递到Web服务器的所有VM参数。这还将显示当前堆大小和最大堆大小。如果有重复的参数,通常情况下,列表中的最后一个内存参数就是所使用的参数。如果您对此有更多问题,可以在这里查看
如果使用jconsole(java jdk附带)连接到Web服务器:
jconsole <pid>
jconsole
您可以转到VM摘要选项卡以查看传递到Web服务器的所有VM参数。这还将显示当前堆大小和最大堆大小。如果有重复的参数,通常情况下,列表中的最后一个内存参数就是所使用的参数。如果您对此有更多问题,可以在这里查看
您可以使用JMX调用获取当前堆大小,使用运行时获取最大内存大小。但是,我将使用VisualVM,因为它将向您显示此信息,而无需编写任何代码。
Runtime.getRuntime().maxMemory()
将返回-Xmx
的值(以字节为单位);但是,我认为没有办法获得-Xms
的值。此外,您可能需要仔细查看Codahale的度量包。您可以使用JMX调用获取当前堆大小,并使用运行时获取最大内存大小。但是,我将使用VisualVM,因为它将向您显示此信息,而无需编写任何代码。Runtime.getRuntime().maxMemory()
将返回-Xmx
的值(以字节为单位);然而,我不相信有一种方法可以获得-Xms
的值。另外,您可能想好好看看Codahale的Metrics包