jvm堆学习笔记

堆:jvm最大的一块内存区域

  1. 堆空间组成?
    老年代
    新生代:幸存区 to from; 伊甸园区 Eden
    永久代--方法区

结构如下图:自己多画几次就清楚了

image.png

注意! 方法区别名非堆,所以严格意义不属于堆了,已经淘汰的永久代和新的元空间是方法区的具体实现方式,这就是它们间的关系

jvm配置调优策略:

关于堆和非堆,

G1垃圾回收器:jdk8 被Oracle官方号称“全功能的垃圾回收器”,虽然当前和另两个垃圾回收器并存,但是推荐优选G1
理由:

  • jdk9以及以后版本 告警CMS不推荐 日后HotSpot会让其推出舞台
  • jkd9以及以后版本 G1为默认 代替Parallel
  • HotSpot开发团队正在G1不断优化,有更加先进的回收思路 比如Mixed GC不再局限于哪个分区,而是整个内存哪个地方垃圾多,收益大;采用Region分区 效率更高 等等;
    所以建议把使用G1作为一个好习惯,要主动贴合使用新的发展技术

几种GC:
FULL GC:整个java堆垃圾回收
Minor GC:整个新生代
Major GC:整个老年代

CMS:并发标记扫描 基于标记-清除算法
目标:响应时间最短,GC单次执行时间最短为目标;比如网站服务应用需要快速响应用户;

Parallel垃圾回收器:看重jvm吞吐量,
吞吐量=(用户代码执行时间)/(用户代码执行时间+垃圾回收用时)

类似于 物理的计算有用功的效率,只是从功变成了时间单位;真正有效的用户时间比例;

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容