当前位置: 首页 > 面试题库 >

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

鲜于玮
2023-03-14
问题内容

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

如果您想知道为什么要执行此操作,则有许多JVM
Web服务器可能已正确配置,也可能未正确配置,因此我想将其添加到启动代码检查中。对于我来说,签入到处部署的一段Java代码比手动查找和检查所有jvm启动文件要容易得多。现在,无论好坏,jvm配置文件都不在我们的构建过程中,也不在源代码管理中。


问题答案:

尝试:

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 Application
Launcher链接到:

  • ManagementFactory.getRuntimeMXBean()致电
  • getInputArguments() Java文档
  • 从Java访问JVM参数(例如,确定JVM是否在调试模式下运行,以便更改应用程序的“网格初始化”逻辑
  • 注释类型MXBean
  • MXBean Java教程

该技术利用了自J2SE 5(在Java SE
6中添加了自定义MXBeans支持)以来可用的Platform MXBean 。

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

  • JVM选项和
  • 查尔斯·纳特的最爱热点JVM标志。

这两个资源都列出并描述了一些/所有不建议休闲开发人员使用的双X参数(-XX)。



 类似资料:
  • 我正在linux 64bit中构建没有glibc的简单应用程序。但是我不知道如何获取参数。 我谷歌了一下,发现RDI是argc,RSI是argv。但它不起作用。 当_start函数开始使用gdb时,我看到了寄存器,但RDI和RSI都是0x0。我还用最简单的汇编应用程序进行了测试,但结果是一样的。RDI和RSI是0x0。我认为即使我没有向程序传递参数,argc也不应该是0x0。 这是我尝试过的C代码

  • 启动参数总结 -h, --help 打印帮助信息 --switch=SWITCH 交换机类型,包括 [kernel user ovsk] --host=HOST 模拟主机类型,包括 [process] --controller=CONTROLLER 控制器类型,包括 [nox_dump none ref remote nox_pysw] --topo=TOPO,arg1,arg2,...argN

  • 我对Spring Boot cassandra web应用程序有问题。随着数据的增长,它开始出现,现在它是一个非常常见的场景。 所有查询有时都不起作用,返回。几秒钟后它又开始工作了,几秒钟后它就不工作了。所以web应用程序不断返回或响应。相同的查询始终在中工作。 我正在使用: Spring启动启动程序 sping-boo-starter-data-cassandra#2.1.3 Cassandra

  • 本文向大家介绍java读取xml配置参数代码实例,包括了java读取xml配置参数代码实例的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了java读取xml配置参数代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 paras.xml文件 SysParam.java类文件 使用 需要引用包 以上就是本文的全部内容,希望对大家的学习

  • 我需要制作一个程序,从命令行获取可选参数。如果显示flag,我需要读取下面的正则表达式,并将其作为字符串保存到程序中。类似于: 我现在看到的是: 但是,当我从文件夹运行程序时,其中有些文件是和,程序将打印“file1.java”。如何使用“*.java”获取变量? 当我尝试打印所有参数时,使用: 它给了我: 这让我得出结论,我需要以不同的方式阅读参数...

  • 问题内容: Python程序员可以通过哪些方式做到这一点? 问题答案: 标准库中的规范解决方案是: 这是一个例子: 任意顺序的多个选项。 短期和长期选择。 默认值。 生成使用帮助消息。