在 Eclipse 中查看 gcmv 使用的堆数量?
Amount used heap looking at gcmv in eclipse?
当我在 Eclipse 中使用垃圾收集和内存可视化工具时,我不清楚我的应用程序实际需要多少内存。看这张图:
据说 0:12 它获得了 0.4 GB 以上的空间。我知道它获得比实际需要更多的堆(图中的堆大小)。但我想看到的是它真正使用了多少内存。其他两个图表只是混淆了图片。我可以在 gcmv 中这样做吗?
使用了多少内存这个问题没有明确的答案,因为这取决于已使用的定义。有时,JVM 将获取内存,应用程序将通过写入内存来使用 内存以便稍后读取。你可以说,它使用内存,只要稍后有另一个访问该内存。如果您永远不会读取一个值,那么保存该值的内存并不是真正需要的,但是找出应用程序是否会再次读取它是一个技术挑战。
预测稍后是否会有访问的一种方法是利用对象结构并将每个无法访问的对象视为未使用。这个分析,叫做垃圾回收,在某些时间点运行s,所以在这些时间点,我们经常会发现实际使用的内存小于两次垃圾回收之间应用程序使用的内存运行s。但是在这些点之间,没有关于可访问对象的已用内存量的知识。
因此,您在图表中看到了两个图表,一个表示您的应用程序在两个垃圾回收周期之间将数据写入的内存,另一个表示垃圾回收后生成的仍可访问的内存。 required 大小假定介于两者之间。对于任意时间点,较高的“回收前”值源于应用程序在没有发生垃圾回收的情况下使用了它们,但是如果当时发生了垃圾回收,则实际使用的(仍可访问的)内存可能低于该值,但不太可能低于“收集后”值(尽管还不确定)。
当您想要安全起见时,请确保始终至少有与记录的“收集前”值一样多的内存可用,并且应用程序应该 运行 与您记录的过程一样。但是,您可以将可用内存减少到“收集前”和最大“收集后”值之间的值,并且仍然 运行 应用程序成功,但垃圾收集周期不同,可能花费更多 CPU 垃圾收集时间。
当我在 Eclipse 中使用垃圾收集和内存可视化工具时,我不清楚我的应用程序实际需要多少内存。看这张图:
据说 0:12 它获得了 0.4 GB 以上的空间。我知道它获得比实际需要更多的堆(图中的堆大小)。但我想看到的是它真正使用了多少内存。其他两个图表只是混淆了图片。我可以在 gcmv 中这样做吗?
使用了多少内存这个问题没有明确的答案,因为这取决于已使用的定义。有时,JVM 将获取内存,应用程序将通过写入内存来使用 内存以便稍后读取。你可以说,它使用内存,只要稍后有另一个访问该内存。如果您永远不会读取一个值,那么保存该值的内存并不是真正需要的,但是找出应用程序是否会再次读取它是一个技术挑战。
预测稍后是否会有访问的一种方法是利用对象结构并将每个无法访问的对象视为未使用。这个分析,叫做垃圾回收,在某些时间点运行s,所以在这些时间点,我们经常会发现实际使用的内存小于两次垃圾回收之间应用程序使用的内存运行s。但是在这些点之间,没有关于可访问对象的已用内存量的知识。
因此,您在图表中看到了两个图表,一个表示您的应用程序在两个垃圾回收周期之间将数据写入的内存,另一个表示垃圾回收后生成的仍可访问的内存。 required 大小假定介于两者之间。对于任意时间点,较高的“回收前”值源于应用程序在没有发生垃圾回收的情况下使用了它们,但是如果当时发生了垃圾回收,则实际使用的(仍可访问的)内存可能低于该值,但不太可能低于“收集后”值(尽管还不确定)。
当您想要安全起见时,请确保始终至少有与记录的“收集前”值一样多的内存可用,并且应用程序应该 运行 与您记录的过程一样。但是,您可以将可用内存减少到“收集前”和最大“收集后”值之间的值,并且仍然 运行 应用程序成功,但垃圾收集周期不同,可能花费更多 CPU 垃圾收集时间。