我正在研究Java JMX和JConsole.我很好奇JConsole的内存管理能力.例如,"内存"选项卡中有一个"执行GC"按钮:
假设我有一个简单的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() );
}
}
}
Run Code Online (Sandbox Code Playgroud)
是否有办法配置JConsole以防止此应用程序消耗X大量内存?或者我需要通过JMX创建一个新的MBean?谢谢
有没有办法配置 JConsole 以防止此应用程序消耗 X 内存量?
从 JConsole 我们无法调整/控制内存限制。-Xmx我看到的唯一选项是在 java 进程启动期间使用。看下面的屏幕截图,JConsole 将内存参数公开为只读但不可写。
或者我需要通过 JMX 创建一个新的 MBean 吗?
即使我们编写自己的 MBean,我也不认为可以在运行时更改 java 进程的内存限制。唯一的方法是在启动期间使用-Xms和配置内存限制-Xmx。
除非问题特定于您的示例代码,否则您希望通过限制内存消耗来限制可以添加到 through 的元素数量Vector,JMX Bean这是可行的,但我怀疑这是否就是您的意思寻找。
| 归档时间: |
|
| 查看次数: |
482 次 |
| 最近记录: |