gpt4 book ai didi

java - 我如何确定我的 JVM 中每一代堆的大小?

转载 作者:搜寻专家 更新时间:2023-11-01 01:36:22 27 4
gpt4 key购买 nike

如果我使用 -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 插件。

http://puu.sh/YCpX

安装并重新启动 Visual VM 后,我们可以通过 Visual GC 选项卡更深入地查看堆使用情况。

http://puu.sh/YCqD

关于java - 我如何确定我的 JVM 中每一代堆的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12120127/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com