繁体   English   中英

在运行时设置JVM参数

[英]Setting JVM parameters at runtime

在JVM已经加载(运行)之后,是否可以更改/修改/添加VM参数? 如果是这样,我该怎么办?

对于您通过命令行上的-D标志设置的属性,您需要System.setProperty 例如:

System.setProperty("propname", "hello world");

// ... later ...
String value = System.getProperty("propname");

更新:

您无法动态启用调试,但可以在启动时启用调试,但稍后可以附加调试器。 使用以下命令,您可以侦听端口12345并立即启动程序(通过suspend=n )。 然后,如果/需要,可以附加调试器,分离调试器,稍后再次附加等。

-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=12345

当然,即使未附加调试器,这也会损害性能,因此它仅适用于开发/测试代码,而不适用于生产。 为此,您需要记录,例如log4j

简短的回答是您无法在运行时更改VM参数。 Runtime类确实暴露了一些选项,如max memory。 诸如max memory之类的主要参数应仅由管理类型设置,以允许在机器上存在多个JVM时管理资源。 允许一个JVM变得贪婪并且要求比分配的更多和更多将会杀死这个约束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM