读取Java JVM启动参数(例如-Xmx)

发布于 2024-08-06 21:27:11 字数 280 浏览 5 评论 0原文

我试图弄清楚是否有一种方法可以从正在运行的 java 进程中确定 JVM 启动属性。具体来说,我试图找出 -Xmx(最大堆大小)和 -XX:MaxPermSize 等参数的存储位置。我正在运行 Sun 的 1.6 jvm。

如果您想知道为什么我要这样做,我有许多 JVM Web 服务器,它们可能配置正确,也可能不正确,我想将其添加到启动代码检查中。对我来说,签入一段部署在各处的 java 代码比手动查找并检查所有 jvm 启动文件要容易得多。现在,无论好坏,jvm 配置文件都不是我们构建过程的一部分,也不是签入源代码管理的。

I'm trying to figure out if there's a way to determine the JVM startup properties from within a running java process. Specifically I'm trying to find out where parameters such as -Xmx (max heap size) and -XX:MaxPermSize are stored. I'm running Sun's 1.6 jvm.

If you're wondering why I want to do this, I have a number of JVM webservers that may or may not be configured correctly and I want to add this to the startup code check. It's much easier for me to check in a piece of java code that gets deployed everywhere than to manually find and check all of the jvm startup files. Right now the jvm configuration files for better or worse are not part of our build process or checked into source control.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情痴 2024-08-13 21:27:11

尝试:

import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;

import java.util.List;

public void runtimeParameters() {
  RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
  List<String> aList = bean.getInputArguments();

  for (int i = 0; i < aList.size(); i++) {
    System.out.println( aList.get( i ) );
  }
}

这应该显示所有 JVM 参数。

注意:我们在 VCS 中也没有 JVM 参数,而是在数据库中,由我们自己的生产中的启动器读取。这样,我们就可以远程更改这些值,而无需重新部署 JVM 参数文件设置。


您会发现各种 JVM 的很好的总结本文中使用的工具(来自“Dustin 的软件开发思考和推测”),包括
Java 应用程序启动器 链接到:

此技术利用自 J2SE 5 以来可用的平台 MXBean(自定义 MXBean 支持已添加到 Java SE 6 中。

有关使用 Sun JVM 时可用的 JVM 参数的两个有用信息来源是:

这两个资源都列出并描述了一些/全部不推荐给休闲开发人员的可用双 X 参数 (-XX) .

Try:

import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;

import java.util.List;

public void runtimeParameters() {
  RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
  List<String> aList = bean.getInputArguments();

  for (int i = 0; i < aList.size(); i++) {
    System.out.println( aList.get( i ) );
  }
}

That should show all JVM parameters.

Note: we do not have JVM parameter in VCS either, but in a database, read by our own launchers in productions. That way, we can change those values remotely, without having to redeploy JVM parameter file settings.


You will find a good sumary of various JVM tools to use in this article (from the "Dustin's Software Development Cogitations and Speculations"), including
Java Application Launcher links to :

This technique takes advantage of Platform MXBeans available since J2SE 5 (custom MXBeans support was added in Java SE 6).

Two useful sources of information on the JVM parameters available when using Sun's JVM are:

Both of these resources list and describe some/all of the not-recommended-for-the-casual-developer double X arguments (-XX) that are available.

不乱于心 2024-08-13 21:27:11

一样简单

对于 Java 7 或更高版本,就像java -XshowSettings:all

With Java 7 or later it's as easy as

java -XshowSettings:all

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文