JDK类中java.lang.ref.WeakReference对象的内存泄漏
发布时间:2020-09-01 10:25:08 所属栏目:Java 来源:互联网
导读:以下简单代码再现了堆中 java.lang.ref.WeakReference对象的增长: public static void main(String[] args) throws Exception {while (true) {java.util.logging.Logger.getAnonymousLogger();Thread.sleep(1);}} 以下是几秒间隔内jmap
以下简单代码再现了堆中 java.lang.ref.WeakReference对象的增长: public static void main(String[] args) throws Exception { while (true) { java.util.logging.Logger.getAnonymousLogger(); Thread.sleep(1); } } 以下是几秒间隔内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 请注意,jmap命令强制使用FullGC. JVM settings: export JVM_OPT=" -d64 -Xms200m -Xmx200m -XX:MaxNewSize=64m -XX:NewSize=64m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=10 -XX:SurvivorRatio=2 -XX:CMSInitiatingOccupancyFraction=60 -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSParallelRemarkEnabled -XX:+DisableExplicitGC -XX:+CMSClassUnloadingEnabled -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationStoppedTime -XX:+PrintClassHistogram -XX:+ParallelRefProcEnabled -XX:SoftRefLRUPolicyMSPerMB=1 -verbose:gc -Xloggc:$GCLOGFILE" java version "1.6.0_18" Java(TM) SE Runtime Environment (build 1.6.0_18-b07) Java HotSpot(TM) Server VM (build 16.0-b13,mixed mode) Solaris 10/Sun Fire(TM) T1000 解决方法已在1.6.0_29: http://www.oracle.com/technetwork/java/javase/6u29-relnotes-507960.html?ssSourceSiteId=ocomen中修复错误页面本身(http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6942989)上没有提到1.6.0_29,所以我认为在那里发布链接是有用的,所以修复它的事实是可以发现的. (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |