gpt4 book ai didi

java - 如何在没有分析器的情况下获取 JVM 中迄今为止分配的总内存?

转载 作者:太空宇宙 更新时间:2023-11-04 10:48:53 24 4
gpt4 key购买 nike

我想使用 java.lang.management API 获取 Java 程序中某个时刻之前分配的总内存。到目前为止,这就是我所拥有的:

ManagementFactory.getMemoryPoolMXBeans()
.stream()
.map(MemoryPoolMXBean::getPeakUsage)
.filter(usage -> usage != null)
.mapToLong(MemoryUsage::getUsed)
.sum();

我想知道这段代码是否能达到我想要的效果,或者结果是否会产生误导和/或不正确。

最佳答案

您将通过此代码获得有关当前内存使用情况的准确结果。

以下是示例代码供您引用:

 

long heapSize = Runtime.getRuntime().totalMemory();
long max = Runtime.getRuntime().maxMemory();

StringBuilder message = new StringBuilder();

message.append("Heap Size = ").append(formatSize(heapSize)).append("\n");
message.append("Max Heap Size = ").append(formatSize(max)).append("\n");

for (MemoryPoolMXBean pool : ManagementFactory.getMemoryPoolMXBeans()) {
String name = pool.getName();
MemoryType type = pool.getType();
MemoryUsage usage = pool.getUsage();
MemoryUsage peak = pool.getPeakUsage();
message.append("Heap named '").append(name);
message.append("' (").append(type.toString()).append(") ");
message.append("uses ").append(usage.getUsed());
message.append(" of ").append(usage.getMax());
message.append(". The max memory used so far is ");
message.append(peak.getUsed()).append(".\n");
}
System.out.println(message.toString());

希望这对您有帮助。

关于java - 如何在没有分析器的情况下获取 JVM 中迄今为止分配的总内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48061643/

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