我正在学习JavaJMX https://docs.oracle.com/javase/tutorial/jmx/ and JConsole http://docs.oracle.com/javase/7/docs/technotes/guides/management/jconsole.html。我对 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() );
}
}
}
有没有办法配置 JConsole 以防止此应用程序消耗X
内存量?或者我需要通过 JMX 创建一个新的 MBean 吗?谢谢
有没有办法配置 JConsole 以防止此应用程序
消耗X量的内存?
从 JConsole 我们无法调整/控制内存限制。我看到的唯一选项是使用-Xmx
在java进程启动期间。看下面的屏幕截图,JConsole 将内存参数公开为只读但不可写。
或者我需要通过 JMX 创建一个新的 MBean 吗?
即使我们编写自己的 MBean,我也不认为可以在运行时更改 java 进程的内存限制。唯一的方法是在启动期间配置内存限制-Xms
and -Xmx
.
除非问题特定于您的示例代码,否则您希望限制可以添加到的元素数量Vector
通过JMX Bean
并通过限制内存消耗,这是可行的,但我怀疑这是否是您正在寻找的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)