标签: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
尾随线程生命周期,在方法运行中存储数据
(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类信息):标记、整理算法
标签:des style class code java http
原文地址:http://www.cnblogs.com/yxwkf/p/3790083.html