我的程序显示内存泄漏的趋势。当内存使用量达到峰值时,GC计数更多,并且垃圾收集对象。Java:是否收集临时对象垃圾?
我们发现一个类是内存泄漏趋势的原因。
但我想检查为何类实际上是垃圾回收,当我探索类,只有一个在一流的瞬态对象。
瞬态对象是未序列化的对象。但是暂时性与垃圾收集有什么关系?
我的程序显示内存泄漏的趋势。当内存使用量达到峰值时,GC计数更多,并且垃圾收集对象。Java:是否收集临时对象垃圾?
我们发现一个类是内存泄漏趋势的原因。
但我想检查为何类实际上是垃圾回收,当我探索类,只有一个在一流的瞬态对象。
瞬态对象是未序列化的对象。但是暂时性与垃圾收集有什么关系?
有没有这样的事情作为一个瞬态的对象。有一些短暂的字段,在序列化过程中会被忽略 - 但对垃圾收集没有影响。基本上,我认为你需要到别处寻找你的泄漏(如果你确实有有泄漏)。
并短暂性都与垃圾收集什么?
没有,什么都没有。
的transient
关键字表示它不应该被序列化,所以如果什么这将意味着反序列化对象是小于他们原本是。
我们发现一个类是内存泄漏趋势的原因。
由于您在不需要它时将这样的对象保存在集合中,因此会产生内存泄漏。当你不需要它们时,你必须确保以这种方式保留的对象被移除。
仅仅因为你保留了数据,并不意味着你有泄漏。您可能需要这些数据,因此您需要的内存超出您的预期。在这种情况下,您需要通过设置-Xmx
或-mx
命令行选项来增加最大内存。
不,没有关系。请记住,如果GC最终清理了所有内容,则不会遭受内存泄漏;这是GC工作的方式。你不应该担心迟到的GC,如果你是,你只需要调整JVM参数。
瞬态不会影响垃圾收集。
也许寻找一个紧密的循环,其中的对象必须彼此,这可能减缓垃圾收集下来的引用使用的对象。
也许探索使用Java的弱引用。
也许看调整垃圾收集设置。 ConcurrentSweepGC可以提供帮助。
也许只是看分配更多的堆和栈空间。
“临时对象,可以是垃圾收集”的确存在于Java,使用WeakReference
对于应尽快收集GC运行和SoftReference
的东西,最好保持,但如果内存应该被抛弃的对象低。
关键字transient
对内存管理没有影响。
@Pratik:请不要编辑帖子,以便在代码字体中放置条款时,他们不是代码。 –