java - Java的JConsole可以用来自动配置内存吗?

标签 java jmx jconsole

我正在学习 Java JMXJConsole .我很好奇 JConsole 的内存管理能力。例如,内存选项卡中有一个“执行 GC”按钮:

enter image description here

假设我有一个简单的 Java 应用程序会占用内存,如下所示:

public class MemoryEater
{
  public static void main(String[] args)
  {
    Vector v = new Vector();
    while (true)
    {
      byte b[] = new byte[1048576];
      v.add(b);
      Runtime rt = Runtime.getRuntime();
      System.out.println( "free memory: " + rt.freeMemory() );
    }
  }
}

是否有一种方法可以配置 JConsole 以防止此应用程序消耗 X 内存量?或者我是否需要通过 JMX 创建一个新的 MBean?谢谢

最佳答案

Would there be a way to configure JConsole to prevent this app from consuming X amount of memory?

我们无法从 JConsole 调整/控制内存限制。我看到的唯一选项是使用 -Xmx在 java 进程启动期间。查看下面的屏幕截图,JConsole 将内存参数公开为仅可读但不可写。

JConsole memory parameters readonly


Or do I need to make a new MBean via JMX ?

即使我们编写自己的 MBean,我也不认为可以在运行时更改 Java 进程的内存限制。唯一的方法是在启动期间使用 -Xms 配置内存限制。和 -Xmx .

除非问题特定于您的示例代码,否则您希望限制可以添加到 Vector 的元素数量通过JMX Bean并通过限制内存消耗,这是可行的,但我怀疑这是否是您正在寻找的。

关于java - Java的JConsole可以用来自动配置内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35713157/

相关文章:

java - JFrame 文本组件未正确显示

java - Infinispan 服务器 : How to enable JMX monitoring?

java - JBoss JMX 控制台的对象内存占用

java - 将 jconsole 与 ssl 一起使用时握手失败

java - JMX进程,当客户端尝试访问时是否可以调用外部应用程序来处理访问权限

java - Java 方法声明中的最大参数个数

java - 使用自定义构造函数将 JsonNode 转换为 POJO

jquery - 如何在一个页面中使用多个jcarousel?

java - JVM 在没有指定帧的情况下崩溃,只有 "timer expired, abort"

java - 应用程序架构 - 如何将 Swing 应用程序连接到后端?