Java 是否可以记录jvm的调用方式(包括all-D-Xmx等)

Java 是否可以记录jvm的调用方式(包括all-D-Xmx等),java,logging,command-line,Java,Logging,Command Line,为了便于故障排除,我想将java进程的调用方式准确地记录到日志文件中 理想情况下,这应包括: 辩君:好吧,这很简单,我已经在做了 -Xmx256m-XX:+UseParallelGC类型 -Dsome.arg=VALUE stuff 其他参数,如-server-cp“/lib;/bin” 有办法做到这一点吗 编辑:我需要从java内部而不是外部执行此操作您有一个启动应用程序的批处理文件,并有echo语句来打印上面列出的详细信息 例如,将一个ENV VAR设置为JAVA_OPTS,然后将其值设

为了便于故障排除,我想将java进程的调用方式准确地记录到日志文件中

理想情况下,这应包括:

  • 辩君:好吧,这很简单,我已经在做了
  • -Xmx256m-XX:+UseParallelGC类型
  • -Dsome.arg=VALUE stuff
  • 其他参数,如-server-cp“/lib;/bin”
有办法做到这一点吗


编辑:我需要从java内部而不是外部执行此操作

您有一个启动应用程序的批处理文件,并有echo语句来打印上面列出的详细信息

例如,将一个ENV VAR设置为JAVA_OPTS,然后将其值设置为如下所示

set JAVA_OPTS=%JAVA_OPTS% -Xms512m -Xmx1024m -XX:MaxPermSize=256m -Xms128m -Xmx1024m
设置后,使用下面的echo语句打印详细信息

echo   JAVA_OPTS: %JAVA_OPTS%

您有一个启动应用程序的批处理文件,并有echo语句来打印上面列出的详细信息

例如,将一个ENV VAR设置为JAVA_OPTS,然后将其值设置为如下所示

set JAVA_OPTS=%JAVA_OPTS% -Xms512m -Xmx1024m -XX:MaxPermSize=256m -Xms128m -Xmx1024m
设置后,使用下面的echo语句打印详细信息

echo   JAVA_OPTS: %JAVA_OPTS%
使用:

List arguments=ManagementFactory.getRuntimeMXBean().getInputArguments();
这将只返回初始化期间传递给JVM的参数

更多信息可以通过
RuntimeMXBean
的其他方法找到,例如,…

使用:

List arguments=ManagementFactory.getRuntimeMXBean().getInputArguments();
这将只返回初始化期间传递给JVM的参数


更多信息可以通过
RuntimeMXBean
的其他方法找到,比如,…

Nice,我测试了它并给出了“-Dnet.val=true-server-Xmx512m-XX:+UseParallelGC-cp”…“returns”-Dnet.val=true-Xmx512m-XX:+UseParallelGC“因此缺少-server和-cp。不过,这已经很重要了……请参阅该MXBean上的其他方法,
getClasspath()
getVmName()
。后者对-Server或“Java HotSpot(TM)Client VM”说的类似“Java HotSpot(TM)Server VM”不错,我测试了它并给出了“-Dnet.val=true-Server-Xmx512m-XX:+UseParallelGC-cp”…“返回“-Dnet.val=true-Xmx512m-XX:+UseParallelGC”“因此缺少-server和-cp。不过,这已经很重要了……请参阅该MXBean上的其他方法,
getClasspath()
getVmName()
。后者表示类似于“JavaHotSpot(TM)ServerVM”的服务器或“JavaHotSpot(TM)Client VM”