我如何使用JConsole和JMX做的不仅仅是监视我的Java类?
我正在学习如何使用JMX,我有一个简单的Java类,可以占用内存:我如何使用JConsole和JMX做的不仅仅是监视我的Java类?,java,jmx,Java,Jmx,我正在学习如何使用JMX,我有一个简单的Java类,可以占用内存: import java.util.Vector; public class MemoryUsage implements MemoryMBean { public static void main(String[] args) { Vector v = new Vector(); while (true) { byte b[] = new byte[1048576];
import java.util.Vector;
public class MemoryUsage implements MemoryMBean
{
public static void main(String[] args)
{
Vector v = new Vector();
while (true)
{
byte b[] = new byte[1048576];
try {
Thread.sleep(1200);
} catch (InterruptedException ie){}
v.add(b);
Runtime rt = Runtime.getRuntime();
System.out.println( "free memory: " + rt.freeMemory() );
}
}
public void showCurrentTime() {
long time = System.currentTimeMillis();
System.out.println(time);
}
}
当我用JMX设置它并使用JConsole时,我可以像这样监视内存使用情况:
但我能用这个做些更有趣的事吗?如果我想做一些听起来更“聪明”的事情,比如停止/防止Java类在某个阈值(比如-10 MB)后占用更多内存,该怎么办。或者甚至是为了减少分配的内存量,等等。JConsole本身允许您这样做吗?还是我必须更改JMX代码
如何将其添加到JMX类中?我想,但是应用程序会失败。“我想你可以重新启动它,但你要冒着创建反馈循环的风险。”ElliottFrisch-好的,明白了。但什么是反馈回路?它会吞噬更多的记忆?也许,也许不会;但它可能会启动,消耗太多内存,然后立即重新启动(无限期)。