加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 16:25:14 所属栏目:Java 来源:网络整理
导读:以下简单代码再现了堆中 java.lang.ref.WeakReference对象的增长: public static void main(String[] args) throws Exception {while (true) {java.util.logging.Logger.getAnonymousLogger();Thread.sleep(1);}} 以下是几秒间隔内jmap命令的输出: user@t1
以下简单代码再现了堆中 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,所以我认为在那里发布链接是有用的,所以修复它的事实是可以发现的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读