【发布时间】:2016-06-13 07:05:09
【问题描述】:
我正在学习 Java JMX 和 JConsole。我很好奇 JConsole 的内存管理能力。例如,Memory 选项卡中有一个“Perform 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 吗?谢谢
【问题讨论】:
-
您可以配置 Java 进程可以消耗多少内存作为启动命令行选项。我不认为这可以在运行时改变。 stackoverflow.com/questions/763295/…
-
如果您担心 JVM 实例会占用您所有的操作系统内存,您可以使用 -Xmx64m 限制 JVM 的堆大小,您可以在其中替换 64m 以指定您自己的最大允许堆大小兆字节。