为什么我的Java堆转储大小比使用的内存小得多?

为什么我的Java堆转储大小比使用的内存小得多?,第1张

为什么我的Java堆转储大小比使用的内存小得多?

转储堆时,JVM将首先运行垃圾回收周期以释放所有无法访问的对象。

如何在不首先进行垃圾收集的情况下在Java5上进行堆转储?

以我的经验,在真正的OutOfMemoryError中,您的应用程序仅需要比可用空间更多的堆空间,此GC是一个愚蠢的事情,最终的堆转储将为最大大小。堆大小。

当堆转储小得多时,这意味着系统并不是真正的内存不足,而是可能有内存压力。例如,存在

java.lang.OutOfMemoryError: GCoverhead limit exceeded
错误,这意味着JVM可能已经能够释放足够的内存来满足某些新的分配请求,但是它不得不花费太多时间来收集垃圾。

您也可能没有内存问题。是什么让您觉得自己呢?您没有提及有关堆使用或OutOfMemoryError的任何信息。您仅提到了JVM在 *** 作系统上的内存占用量。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5561104.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存