- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内存泄露分析工具MemoryAnalyzerToolMAT介绍
内存泄露分析工具 HYPERLINK /rosen/archive/2010/05/21/321575.html Memory Analyzer tool(MAT) 介绍
Java如何管理内存
Java的内存管理就是对象的分配 和释放问题。在Java中,程序员需要通过关键字new为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。另外,对象的释放是由GC决定和执行的。在Java中,内存的分配是由程序完成的,而内存的释放是有GC完成的,这种收支两条线 的方法确实简化了程序员的工作。但同时,它也加重了JVM的工作。这也是Java程序运行速度较慢的原因之一。因为,GC为了能够正确释放对象,GC必须 监控每一个对象的运行状态,包括对象的申请、引用、被引用、赋值等,GC都需要进行监控。
监视对象状态是为了更加准确地、及时地释放对象,而释放对象的根本原则就是该对象不再被引用。
为了更好理解GC的工作原理,我们可以将对象考虑为有向图的顶点,将引用关系考虑为图的有向边,有向边从引用者指向 被引对象。另外,每个线程对象可以作为一个图的起始顶点,例如大多程序从main进程开始执行,那么该图就是以main进程顶点开始的一棵根树。在这个有 向图中,根顶点可达的对象都是有效对象,GC将不回收这些对象。如果某个对象 (连通子图)与这个根顶点不可达(注意,该图为有向图),那么我们认为这个(这些)对象不再被引用,可以被GC回收。
以下,我们举一个例子说明内存管理。对于程序的每一个时刻,我们都有一个有向图表示JVM的内存分配情况
以下右图,就是左边程序运行到第6行的示意图。
?Java 使用有向图的方式进行内存管理,可以消除引用循环的问题,例如有三个对象,相互引用,只要它们和根进程不可达的,那么GC也是可以回收它们的。这种方式的 优点是管理内存的精度很高,但是效率较低。另外一种常用的内存管理技术是使用计数器,例如COM模型采用计数器方式管理构件,它与有向图相比,精度行低 (很难处理循环引用的问题),但执行效率很高。
两种常见的内存泄露
1.永久保存区内存溢出
java.lang.OutOfMemoryError: PermGen space
Jvm默认的永久区为4M,如果未设置启动参数,很可能由于class类太多,导致永久区爆掉.设置set JAVA_OPTS=-Xms800m -Xmx800m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m
设置-XX:PermSize 可以解决这个问题
2.JVM调配使用的内存空间不足内存溢出
GC可用heapsize不足2%时抛出,java.lang.OutOfMemoryError: Java heap space
MAT工具能够解决那些问题?
快速查找解决系统崩溃.
能够看到系统运行情况,提前找到系统内存使用上存在的问题.
如何使用
先dump出内存,可以通过MAT工具分析内存使用情况,找到问题的关键.
案例介绍
设置jvm启动参数
增加set JAVA_OPTS= -verbose:gc -Xloggc:../logs/gclog.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+HeapDumpOnOutOfMemoryError %JAVA_OPTS%
加在jboss 的 run.bat 第98行.加在使用JAVA_OPTS 前面就行了
其中红色标记的是内存溢出时内存状况写入到文件中.
写一段非常好资源的代码.
protected void execute(RunData rundata, TemplateContext context) throws WebxException {
this.test();
}
private void test(){
//创建一个非常耗性能的代码
ListString ret1 = new ArrayListString();
ListString ret2 = new ArrayListString();
ListString ret3 = new ArrayListString();
ListString ret4 = new ArrayListString();
ListString ret5 =
您可能关注的文档
- 关于文博事业信息化建设有关问题的思考游庆桥.doc
- 关于波罗电厂继电保护技改升级的竣工验收报告周强用蓝字回复付总的意见.doc
- 关于汽车维修的论文汽车修理论文关于汽车修理的论文汽车故障原因及防范措施.doc
- 关于泗洪县110kV泗金线施工工期的探讨运筹与决策.doc
- 关于民事再审制度改革及前景展望.doc
- 关于浅谈程序公正与审判监督.doc
- 关于水晶滴胶做的迷你银河系的教程和几点建议.doc
- 关于浙江创建服务型政府的实践研究.doc
- 关于济南泉文化旅游的调查报告修改版.doc
- 关于海南岛蜥蜴类生物多样性的研究.doc
- 幼儿园全民国家安全教育日PPT.ppt
- 文明礼仪伴我行主题班会课.ppt
- 4.2 《心有一团火,温暖众人心》课件(共26张PPT) 2024-2025学年统编版高中语文必修上册.pptx
- 大模型平民化开启“AI+医疗”新纪元.pptx
- 2《以工匠精神雕琢时代品质》 课件(共28张PPT)2024-2025学年统编版高中语文必修上册.pptx
- 3《鸿门宴》 课件 (共52张PPT)2024-2025学年统编版高中语文必修下册.pptx
- unit 2能力阅读写作拔高练-学九级英语全一册单元模块满分必刷题人教版.pdf
- 9.3 《声声慢(寻寻觅觅)》课件 (共25张PPT)2024-2025学年统编版高中语文必修上册.ppt
- “4·23世界读书日”主题教育班会-阅读启心智,知识筑梦想 课件(共27张PPT).pptx
- 4EAT 变速箱维修手册.pdf
文档评论(0)