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

通过Java 5使用jmx以编程方式获取堆信息

秦天宇
2023-03-14
问题内容

我知道使用jconsole附加到Java进程以获取内存信息。具体来说,我是通过编程方式获取有关各种内存池的信息,因此可以将其绑定到监视应用程序。

谢谢!


问题答案:

谢谢mattk-我基本上做了这个:-)

List memBeans = ManagementFactory.getMemoryPoolMXBeans();           
for (Iterator i = memBeans.iterator(); i.hasNext(); ) {

    MemoryPoolMXBean mpool = (MemoryPoolMXBean)i.next();
    MemoryUsage usage = mpool.getUsage();

    String name = mpool.getName();      
    float init = usage.getInit()/1000;
    float used = usage.getUsed()/1000;
    float committed = usage.getCommitted()/1000;
    float max = usage.getMax()/1000;
    float pctUsed = (used / max)*100;
    float pctCommitted = (committed / max)*100;

}


 类似资料:
  • 问题内容: 我需要以编程方式启动新的Java进程并动态设置JMX端口。所以不要这样做 我想做以下 但这不起作用。知道为什么吗? 问题答案: 在调用代码时,您已经错过了配置jmxremote连接器的机会。 您需要做的是创建您自己的rmi注册表和JMXConnectorServer来侦听rmi调用并将它们传递给MBeanServer。

  • 问题内容: 我正在寻找示例Java JMX代码以从另一个VM访问JMX属性的值。 使用JConsole,我可以毫无疑问地查看java.lang / Memory / Attributes / HeapMemory 我如何从VM中运行的Java程序中获得相同的信息? 需要任何命令行选项或其他需要启动的示例。 问题答案: 您需要设置一个JMXConnector。这是一个代码片段,它将获取远程计算机上已

  • 问题内容: 我可以使用来获取堆末尾的地址,但是除了解析内容之外,有什么方法可以以编程方式获取堆头的地址吗? 问题答案: 我认为解析是Linux上找到堆段的唯一可靠方法。并且不要忘记某些分配器(包括我的SLES中的分配器)确实用于大块,因此内存不再是堆的一部分,可以位于任何随机位置。 否则,通常添加一个符号,该符号标记elf中所有段的结尾,并且该符号称为。例如: 它与elf 的末尾(传统上是elf

  • 问题内容: 如何从包含证书和私钥的PEM文件中以编程方式获取KeyStore?我试图在HTTPS连接中向服务器提供客户端证书。我已经确认,如果我使用openssl和keytool来获取jks文件(该文件是动态加载的),则客户端证书可以使用。我什至可以通过动态读取p12(PKCS12)文件来使其工作。 我正在考虑使用BouncyCastle的PEMReader类,但无法克服一些错误。我正在使用-Dj

  • 是否可以使用命令行中的JMX在linux(CentOS)上运行的进程上获取服务器堆转储? 无法打开VisualVM,无法安装jmap

  • 问题内容: 我正在编写一个报告本地计算机上网络设备属性的应用程序。我需要mac地址,mtu,链接速度和其他一些信息。我为此使用udev。我已经弄清楚了如何获取mac地址和mtu,但还没有弄清楚链接速度。我可以从终端使用ethtool来获取它,但是我需要一种以编程方式获取它的方法。 有谁知道我如何获得udev或其他库的链接速度属性? 问题答案: 您需要使用ioctl()调用。在LinuxJourna