有没有更好的方法从命令行打印系统属性?因为我们可以设置属性,例如
java -D<name>=<value> //set a system property
没有写一个类来做到这一点?
如果不可能,为什么从命令行执行此操作不可能/不可行/不好?
原文由 sakhunzai 发布,翻译遵循 CC BY-SA 4.0 许可协议
有没有更好的方法从命令行打印系统属性?因为我们可以设置属性,例如
java -D<name>=<value> //set a system property
没有写一个类来做到这一点?
如果不可能,为什么从命令行执行此操作不可能/不可行/不好?
原文由 sakhunzai 发布,翻译遵循 CC BY-SA 4.0 许可协议
你可以使用 jps 这个jdk自带的工具。它可以打印出传递给 java 进程的系统属性。
例如:在我的系统上,eclipse 正在运行并且
$ jps -v
产出
6632 -Dosgi.requiredJavaVersion=1.6 -Xms1024m -Xmx2048m -XX:MaxPermSize=512m
jps
位于 JDK_HOME/bin
编辑
如果您想要所有属性,请使用同样位于 JDK_HOME/bin
中的 jinfo 工具。要使用它,您必须知道要从中获取信息的 java 进程的进程 ID。例如
$ jinfo 6632
该工具还打印出 java.ext.dirs
原文由 René Link 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.2k 阅读
8 回答5.9k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
您可以在 Hotspot JVM 1.7 及更高版本(1.6 不支持)中使用
-XshowSettings
标志:自 2010 年底以来,OpenJDK 就支持这个标志。
参见 http://marxsoftware.blogspot.de/2016/02/hotspot-jvm-XshowSettings.html
编辑 2016 年 12 月 14 日
Oracle JVM 附带工具 jcmd,它允许您查看正在运行的 JVM 中存在的标志。看:
https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr006.html
对于此用例,您可以使用:
但是还有许多其他有用的命令。例如: