专栏首页无敌码农一张图看懂JVM

一张图看懂JVM

在应聘Java程序员时,经常会被问到JVM相关的知识点。而市面上讲解JVM原理及结构的书籍及资料,要么晦涩难懂,要么断章取义。那么有没有一张比较清晰的图能够将JVM的整体轮廓有一个清晰的描述呢?

小码农特地为大家绘制了一张图,希望对大家有用!

图中涉及的各垃圾回收器特点如下:

1、Serial(新生代-串行-收集器)

  • 策略:标记-复制-清除;
  • 优点:简单高效,适合Client模式的桌面应用(Eclipse);
  • 缺点:多核环境下,无法充分利用资源;

2、parnew(新生代-并行-收集器)

  • 策略:标记-复制-清除;
  • 优点:多线程、独占式,多核环境下提高CPU利用率;
  • 缺点:单核环境下比Serial效率低;

3、Parallel Scanvenge(新生代-并行-收集器)

  • 策略:标记-复制-清除;
  • 优点:精准控制“吞吐量”、gc时间。吞吐量=执行用户代码时间/(执行用户代码时间+内存回收时间);
  • 配置参数(可通过参数精准调控):

4、Serial Old(老年代-串行-收集器)

  • 策略:标记-清除-整理;
  • 优点:简单高效;
  • 缺点:多核环境下,无法充分利用资源;

5、Parall Old(老年代-并行-收集器)

  • 策略:标记-清除-整理;
  • 优点:多核环境下,提高CPU利用率;
  • 缺点:单核环境下,比Serial Old效率要低;

6、CMS(老年代-并发-收集器);

  • 策略:标记-清除;优点:“停顿时间”最短;
  • 缺点:内存碎片(有补偿策略);
  • 适用场景:互联网Web应用的Server端、涉及用户交互、响应速度快;

7、G1(新生代&老年代-并行&并发-服务端收集器)

  • 策略:G1将内存划分为Region,避免内存碎片;
  • 优点:Eden、Survivor、Tenured不再固定,内存使用率更高;可控的STW时间,根据预期的停顿时间,只回收部分Region;
  • 适应场景:多核CPU,JVM占用内存比较大的情况(>4GB);

本文分享自微信公众号 - 无敌码农(jiangqiaodege),作者:无敌码农

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-09-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 教你分析9种 OOM 常见原因及解决方案

    专栏地址:https://github.com/StabilityMan/StabilityGuide

    用户5927304
  • 一张图看懂JVM(升级版)

    JVM总体上是由类装载子系统(ClassLoader)、运行时数据区、执行引擎、内存回收这四个部分组成。其中我们最为关注的运行时数据区,也就是JVM的内存部分则...

    用户5927304
  • 一张图看懂JVM之垃圾回收器详解

    感谢读者的反馈,在?图中更新了新生代Eden区以及两个Survivor区的默认空间占比的分配表示,这里按照10等份区分8/10、1/10、1/10分别表示8:1...

    用户5927304
  • iox:一款功能强大的端口转发&内网代理工具

    iox是一款功能强大的端口转发&内网代理工具,该工具的功能类似于lcx和ew,但是iox的功能和性能都更加强大。

    FB客服
  • 金融级别的人脸识别支付?

    昨天IFAA联盟发布“本地人脸识别安全解决方案”,用来实现金融级别现金支付的技术,“像iPhone X那样去人脸支付吧!安卓终于再一次追平了苹果”,并总结出“攻...

    安智客
  • javascript 红皮高程(10)

    继续string类型的相关知识哈,不细看不知道啊,这JS的知识点真是太细碎了。因为许多知识点都互相交织着,但某些属性却并不是所有的对象都有。例如: 转换字符...

    web前端教室
  • 5款最佳CV和数据科学标记工具,标记公司、初创企业、个人用户全满足

    计算机视觉的数据科学家经常需要快速简单的标记工具用来为PoC或R&D实验创建数据集,以及确保数据质量,以免影响深度学习算法的性能。本文介绍了5种非常棒的注释工具...

    新智元
  • Redis 事件驱动分析

    很多公司面试的时候都喜欢问为什么 Redis 那么快?这就得益于 Redis的 事件驱动模块 ,什么是 事件驱动 呢?通俗来说,事件驱动 指的是当某一事件发生触...

    用户7686797
  • Android 需要配置的环境变量

    longzeqiu
  • 学习二值编码只为高效的时尚套装推荐

    题目: Learning Binary Code for Personalized Fashion Recommendation

    张小磊

扫码关注云+社区

领取腾讯云代金券