WeakReference和内存泄漏

Mic*_*che 1 java memory-leaks weak-references

我正在使用VisualVM分析我的应用程序,我发现堆大小在大约3天内增加了大约7MB.当我使用内存采样器时,我也看到它java.lang.ref.WeakReference在实例编号的前五位.数量WeakReference正在增加,GC几乎没有影响.

任何的想法?

Pab*_*dez 5

你没有内存泄漏.

Java的GC仅在堆已满时运行(实际上有点复杂,因为堆本身被分成几代,但无论如何),所以除非你填充堆(这是非常不可能的,因为7Mb对于任何堆都是太少的内存你无法告诉你是否有泄漏.

WeakReferences是小包装器,实际上有助于防止内存泄漏,方法是将它们引用的对象标记为GC的易读性.我的猜测是你要包含一些缓存库来创建一堆这样的缓存库,并且由于堆仍然有足够的空间,所以不需要垃圾收集它们.

同样,除非您看到GC经常运行且堆大小仍然增加,否则我不会担心内存问题.

这是关于这件事一篇很棒的文章