没有合适的资源?快使用搜索试试~ 我知道了~
内存泄露分析工具Memory_Analyzer_Tool(MAT)介绍.docx
4星 · 超过85%的资源 需积分: 9 59 下载量 56 浏览量
2011-08-25
14:24:18
上传
评论
收藏 778KB DOCX 举报
温馨提示
试读
6页
内存泄露分析工具Memory_Analyzer_Tool(MAT)介绍.docx
资源推荐
资源详情
资源评论
内存泄露分析工具 介绍
Java 如何管理内存
Java 的内存管理就是对象的分配 和释放问题。在 Java 中,程序员需要通过关键字 new 为每
个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。另外,对象的
释放是由 GC 决定和执行的。在 Java 中,内存的分配是由程序完成的,而内存的释放是有 GC
完成的,这种收支两条线 的方法确实简化了程序员的工作。但同时,它也加重了 JVM 的工作。
这也是 Java 程序运行速度较慢的原因之一。因为,GC 为了能够正确释放对象,GC 必须 监控
每一个对象的运行状态,包括对象的申请、引用、被引用、赋值等,GC 都需要进行监控。
监视对象状态是为了更加准确地、及时地释放对象,而释放对象的根本原则就是该对象不再被
引用。
为了更好理解 GC 的工作原理,我们可以将对象考虑为有向图的顶点,将引用关系考虑为图的
有向边,有向边从引用者指向 被引对象。另外,每个线程对象可以作为一个图的起始顶点,例
如大多程序从 main 进程开始执行,那么该图就是以 main 进程顶点开始的一棵根树。在这个
有 向图中,根顶点可达的对象都是有效对象,GC 将不回收这些对象。如果某个对象 (连通子
图)与这个根顶点不可达(注意,该图为有向图),那么我们认为这个(这些)对象不再被引用,可
以被 GC 回收。
以下,我们举一个例子说明内存管理。对于程序的每一个时刻,我们都有一个有向图表示 JVM
的内存分配情况
以下右图,就是左边程序运行到第 6 行的示意图。
Java 使用有向图的方式进行内存管理,可以消除引用循环的问题,例如有三个对象,相互引用,
只要它们和根进程不可达的,那么 GC 也是可以回收它们的。这种方式的 优点是管理内存的精
度很高,但是效率较低。另外一种常用的内存管理技术是使用计数器,例如 COM 模型采用计
数器方式管理构件,它与有向图相比,精度行低 (很难处理循环引用的问题),但执行效率很高。
资源评论
- 叽哩咵啦2013-11-04书籍内容不错
- nothingoneday2013-09-05书籍内容不错
- carlshen82013-11-22感觉内容一般,需要努力. 谢谢!
参天大树SJ
- 粉丝: 442
- 资源: 117
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功