小编man*_*dye的帖子

JDK类中java.lang.ref.WeakReference对象的内存泄漏

以下简单代码重现java.lang.ref.WeakReference了堆中对象的增长:

public static void main(String[] args) throws Exception {

while (true) {
java.util.logging.Logger.getAnonymousLogger();
Thread.sleep(1);
}
}
Run Code Online (Sandbox Code Playgroud)

以下是几秒间隔内jmap命令的输出:

user@t1007:~> jmap -d64 -histo:live 29201|grep WeakReference
8: 22493 1079664 java.lang.ref.WeakReference
31: 1 32144 [Ljava.lang.ref.WeakReference;
106: 17 952

com.sun.jmx.mbeanserver.WeakIdentityHashMap$IdentityWeakReference
user@t1007:~> jmap -d64 -histo:live 29201|grep WeakReference
8: 23191 1113168 java.lang.ref.WeakReference
31: 1 32144 [Ljava.lang.ref.WeakReference;
103: 17 952

com.sun.jmx.mbeanserver.WeakIdentityHashMap$IdentityWeakReference
user@t1007:~> jmap -d64 -histo:live 29201|grep WeakReference
8: 23804 1142592 java.lang.ref.WeakReference
31: 1 32144 [Ljava.lang.ref.WeakReference;
103: 17 952 com.sun.jmx.mbeanserver.WeakIdentityHashMap$IdentityWeakReference
Run Code Online (Sandbox Code Playgroud)

请注意,jmap命令强制使用FullGC.

JVM settings:
export JVM_OPT="\
-d64 \ …
Run Code Online (Sandbox Code Playgroud)

java logging jvm memory-leaks weak-references

6
推荐指数
2
解决办法
3852
查看次数

标签 统计

java ×1

jvm ×1

logging ×1

memory-leaks ×1

weak-references ×1