gpt4 book ai didi

java - 在 Eclipse 中查看 gcmv 使用的堆数量?

转载 作者:行者123 更新时间:2023-12-01 10:28:33 26 4
gpt4 key购买 nike

当我在 Eclipse 中使用垃圾收集和内存可视化工具时,我不清楚我的应用程序实际需要多少内存。看这个图: gcmv view

在 0:12 时,它已获取了略多于 0.4 GB 的空间。我知道它获取的堆(图中的堆大小)比实际需要的多。但我想看看它到底使用了多少内存。另外两张图只是混淆了图片。我可以在 gcmv 中做到这一点吗?

最佳答案

使用了多少内存这个问题没有明确的答案,因为这取决于used的定义。有时,JVM 将获取内存,应用程序将通过写入内存来使用内存,以便稍后能够读取它。你可以说,它使用了该内存,只要稍后会有另一个对该内存的访问。如果您永远不会读取某个值,则实际上并不需要保存该值的内存,但确定应用程序是否会再次读取它是一个技术挑战。

预测稍后是否会有访问的一种方法是利用对象结构并将每个无法访问的对象视为未使用。这种分析称为垃圾收集,在某些时间点运行,因此在这些时间点,我们经常会发现实际使用的内存小于应用程序在两次垃圾收集运行之间使用的内存。但在这些点之间,不知道有关可到达对象的已用内存量。

因此,您会在图表中看到两个图表,一个表示应用程序在两个垃圾收集周期之间写入数据的内存,另一个连接垃圾收集后仍可访问的内存。假设所需的大小位于两者之间。对于任意时间点,较高的“收集前”值源于应用程序在没有发生垃圾收集的情况下使用它们的事实,但是如果当时发生了垃圾收集,则实际使用的(仍然可达)内存可能会低于该值,但不太可能低于“收集后”值(尽管甚至无法确定)。

当您想要安全起见时,请确保始终至少有与记录的“收集之前”值一样多的可用内存,并且应用程序应该像在记录的进程中一样运行。但是,您可能可以将可用内存减少到“收集前”和最大“收集后”值之间的值,并且仍然成功运行应用程序,但垃圾收集周期不同,可能会花费更多的 CPU 时间进行垃圾收集。

关于java - 在 Eclipse 中查看 gcmv 使用的堆数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35219963/

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