java内存泄露模拟及分析解决方法

java内存泄露模拟及分析解决方法

ID:13209642

大小:365.41 KB

页数:9页

时间:2018-07-21

java内存泄露模拟及分析解决方法_第1页
java内存泄露模拟及分析解决方法_第2页
java内存泄露模拟及分析解决方法_第3页
java内存泄露模拟及分析解决方法_第4页
java内存泄露模拟及分析解决方法_第5页
资源描述:

《java内存泄露模拟及分析解决方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、e-mail:derwee@qq.comderweeJava内存泄露模拟及分析解决方法1.1实践目标:1、使用JAVA代码实现模拟内存溢出2、分析JDK内存溢出的原因3、总结存在bug的JAVA编码实践4、总结JVM优化的方法1.2模拟内存溢出:为了方便模拟内存,特意把JVM的内存参数指定为更小(我的本本内存是8G的)。修改eclipse参数文件eclipse.ini调用JVM参数:-vmargs-Xms40m(原始是-Xms40m)-Xmx100m(原始是-Xmx384m)演示JAVA小程序实现原理:使用集合类对象装载大量的Persion对象,每次把new出来的对

2、象加入集合类对象后,更改对象的属性,再从集合类对象中删除该对象。会出现该删除的对象没有被删掉,Persion类对象不断占用内存,导致分配给JVM的内存被耗光。packagecom.derwee.collection.memory;importjava.util.*;/****@ClassName:OutOfMemory*@Description:内存溢出模拟,提出解决方法*@authoryangdw*@date2012-3-25下午6:58:49*/publicclassOutOfMemory{publicstaticvoidmain(String[]args){C

3、ollectioncollection=newHashSet();for(inti=0;i<900000000;i++){Persionper=newPersion(i,"yangdw");collection.add(per);//把new出来的对象加到集合里去per.setName("hundsun");//把刚new出来的对象的名字改为hundsuncollection.remove(per);//把刚加到集合里的对象删除//System.gc();//手工调用垃圾回收器System.out.println("请注意,现在集合对有persion对象数--"+c

4、ollection.size());}}}packagecom.derwee.collection.memory;/****@ClassName:Persion*@Description:TODO(这里用一句话描述这个类的作用)*@authoryangdw*@date2012-3-25下午8:16:54**/publicclassPersion{publicPersion(intid,Stringname){super();this.id=id;this.name=name;}privateintid;privateStringname;publicintgetId

5、(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}@OverridepublicinthashCode(){finalintprime=31;intresult=1;result=prime*result+id;result=prime*result+((name==null)?0:name.hashCode());returnresult;}@Overridep

6、ublicbooleanequals(Objectobj){if(this==obj)returntrue;if(obj==null)returnfalse;if(getClass()!=obj.getClass())returnfalse;Persionother=(Persion)obj;if(id!=other.id)returnfalse;if(name==null){if(other.name!=null)returnfalse;}elseif(!name.equals(other.name))returnfalse;returntrue;}}使用JDK监

7、控程序进行监控JDK内存,线程情况。模拟程序没有运行前的JDK内存使用情况:运行JAVA模拟程序后出现:内存溢出错误:Exceptioninthread"main"java.lang.OutOfMemoryError:Javaheapspaceatjava.util.HashMap.resize(HashMap.java:462)atjava.util.HashMap.addEntry(HashMap.java:755)atjava.util.HashMap.put(HashMap.java:385)atjava.util.HashSet.add(HashSet

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。