码迷,mamicode.com
首页 > 编程语言 > 详细

java-内存管理

时间:2014-06-16 13:40:31      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:des   style   class   code   java   http   

一、jvm内存结构

程序计数器(Program Counter Register)、JVM虚拟机栈(JVM Stacks)、本地方法栈(Native Method Stacks)、堆(Heap)、方法区(Method Area)

(1)PCR
尾随线程生命周期,记录当前运行到的.class字节码行数,用于多线程操作
(2)JVM Stacks
尾随线程生命周期,在方法运行中存储数据
bubuko.com,布布扣 
(3)Native Method Stacks
处理native方法,如object中的hashCodes()等
(4)Heap
存储全部实例对象和数组对象,内置GC
(5)Method Area

堆的组成部分,但不强制GC。存储的对象为执行时常量池、静态变量、JVM载入的类信息等


二、垃圾回收
堆和方法区须要进行垃圾回收,其它三个随线程生命周期创建销毁
垃圾判定算法
(1)引用计算器:对循环引用的对象无法回收

(2)根搜索:效率较低


垃圾清除算法
(1)标记、清除算法
  过程:内存紧张时,停止程序,遍历GC Root将可达的对象标记出可存活的对象,清除全部未使用的对象
  缺点:效率较低;清理出来的空暇内存不连续
(2)复制算法
  过程:将内存分成活动区间和空暇区间两块,新分配的内存在活动区间,内存紧张时进行GC,将活动区间中
            存活的对象,按顺序放入空暇区间
  缺点:浪费一半内存;对象存活率高时比較费复制操作
(3)标记、整理算法
  过程:类似(1)标记全部存活对象,又一次移动按内存顺序排列对象,将末端内存清除
  缺点:效率不高
(4)分代搜索算法
  过程:针对不同对象进行不同的回收算法。
  夭折对象(局部变量、暂时变量):复制算法(80%内存分配对象+10%活动区间+10%空暇区间)
  老不死对象(缓存对象、数据库连接对象、单例对象):标记、整理算法
  不灭对象(String池对象、class类信息):标记、整理算法

java-内存管理,布布扣,bubuko.com

java-内存管理

标签:des   style   class   code   java   http   

原文地址:http://www.cnblogs.com/yxwkf/p/3790083.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!