垃圾回收器和性能调优

垃圾回收器和性能调优

1:虚拟机主要是堆和栈结构(寄存器,常量池等不管,不说),栈主要用来存线程信息,基本变量,程序执行指针。堆是线程共享的,存java 对象。java 类是通过ClassLoader 加载的(.class 是二进制文件,有java 规范的格式)
2:堆分年轻代,年老带,永久带。jkd 1.8 开始,永久带为meta 区(元数据区)。年轻代又分伊甸园和两个幸存区。
3:年轻代:年老带默认1:2;伊甸园:幸存区一般:8:1:1 。对象先分配在伊甸园, gc 的时候移入幸存区,一般最大经过15个minor gc ,进入年老带。jvm 调优,主要查full jc的次数和时长。minor gc不是重点。
4:jvm 目前有7种垃圾回收器,其中年轻的3种,串行,并行,吞吐量优先(也是并行的),年老带3个,串行,并行,CMS(并发,响应优先),另外一个是年老的和年轻的通用的g1 垃圾回收器,主要用在6G 内存以上的情况。
5:吞吐量优先主要用在大数据场合,每次暂停响应时间较长,但总体回收时间较短。CMS 主要用在一般在线业务,垃圾回收时间可以控制在100ms 以内。
6:jvm 调优
6.1 主要调用内存大小,初始化大小,ss 大小,永久区大小,以及垃圾回收器。
6.2 另外一个方面,是用jconsole,jstat ,jmap,一方面看内存各区使用情况,
6.3 另一方面看full jc 的次数,每次时长,总体时长。如果有问题,看占用空间的对象数排名top 5 的,找到后再看代码是不是创建对象策略有问题。
6.4 通过看线程情况,判断是否存在死锁。
6.5 判定垃圾的原则是根引用,故不需要全局的静态变量一定不要设置,另外使用完的对象,使其=null,就能让垃圾回收器回收。
6.6 原则上不要使用system.gc(),会导致full gc,暂停应用对外服务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值