Java垃圾回收(garbage collection)介绍

根据网络资料优化整理



常用虚拟机 hotport JRockit IBMJVM

 

Jdk 默认的oracle 的hotport (常用)

 

GC 使程序员可以不必关注内存

 

大型软件开发和检查内存泄露和溢出,解决性能瓶颈,提高并发,使程序更加高效还是要了解GC机制;

 

Java内存区:

 

1:程序计数器(小)行号指示器

   线程私有,每个线程对应一个计数器

2:栈 statck

    线程私有,每个线程对应一个栈

2.1 虚拟机栈  栈帧 方法调用 入栈,执行完成,出栈;

2.2 本地方法栈

3:堆 heap(最重要的区域,内存分配主要指堆)

   线程共享区域

   机制:分代分配,分代回收

  OutOfMemoryError:Java heap space

  3.1  年轻代  经常GC

       采用停止-复制算法 YongGC

       Eden (内存连续空间)创建新对象,98%很快消亡,满了GC

Survivor0

Survivior1 必须有一个是空白的

8:1:1

活了15次copy年老代(hotport)

如果分配 survivor大于 10% 多于分配到年老代

  3.2  年老代 GC次数比年轻代少

       对象大大多于年轻代,大对象

       采用标记—整理算法 Full GC

                   标记存活对象,向一端移动,保证内存连续;

                   yongGC时虚拟机检查 进入年老代的大小是否大于剩余空间,如果大于进行FullGC

       

       

4:方法区(永久代)

  OutOfMemoryError:Permgen Space

       线程共享区域

       存储已经被虚拟机加载的类信息,final常量,静态变量,编译的代码

       很少GC

       常用两种

       回收没有引用的常量;

       回收卸载已加载的无用类;

 

5:直接内存

     除jvm之外的内存

 

垃圾回收器来做GC,GC的具体实现;实现上述算法;

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值