
[英]How can I determine the JVM minimum heap size from within a java application?
[英]How do I determine the size of each of the heap generations in my JVM?
如果我用-Xms256M和-Xmx512M启动我的JVM,在任何时候,我可以确定专门分配给堆的年轻和终身代的空间量吗?
我假设你的意思是以编程方式确定。 你应该看看java.lang.management
。 特别是, ManagementFactory.getMemoryPoolMXBeans
在这里应该很有用。
final List<MemoryPoolMXBeans> pools = ManagementFactory.getMemoryPoolMXBeans();
for (final MemoryPoolMXBean pool : pools) {
if (pool.getType() == MemoryType.HEAP) {
final String name = pool.getName();
final MemoryUsage usage = pool.getUsage();
if (name.startsWith("Eden")) {
System.out.println("found eden: " + usage);
} else if (name.startsWith("Tenured")) {
System.out.println("found tenured: " + usage);
}
}
}
这应该可以使用HotSpot JVM。
如果您不打算以编程方式执行此操作, VisualVM (JDK中的jvisualvm
)允许您在许多其他漂亮的东西中监视堆使用情况。
(来源: java.net )
但请注意,VisualVM缺乏对开箱即用的特定内存池的监控支持; 你需要安装jvmstat 。 然后,您必须从VisualVM的插件管理器安装Visual GC插件。
安装并重新启动Visual VM后,我们可以通过Visual GC选项卡查看更深入的堆使用情况。
使用JConsole可以轻松监视堆大小。 您可以在内存选项卡中看到不同的gen大小。 从图表下拉列表中选择所需的gen。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.