叫练手把手教你读JVM之GC信息

Java31

众所周知,GC主要回收的是堆内存,堆内存中包含年轻代和老年代,年轻代分为Eden和Surivor,如下图所示。我们用案例分析下堆的GC信息【版本: HotSpot JDK1.8】。

案例很简单,for循环运行5次,每次在Eden申请1M空间,假设我们分配堆内存空间是20m,并打印GC详细信息,配置过程: -XX:+PrintGCDetails -Xmx20m。

  • -XX:+PrintGCDetails:打印GC详细信息。
  • -Xmx20m:分配最大堆内存空间是20m。

GC详细分析

运行程序,IDEA控制台打印结果如下:

  • -Xms 初始堆大小,不够时,会自动扩展,所以一般 Xms空间和 Xmx最大堆空间 *设置成一样的。

上面程序不变,设置JVM参数, -XX:+PrintGCDetails -Xmx20m -Xms5m,运行程序,部分结果如下图所示。

如上图所示:初始化堆大小是5M,新生代内存一共发生了4次GC,从上图可以分析,Eden只有1M多内存可以被申请,所以第二次for循环申请1M空间就触发了GC,数据就被丢进老年代,连续3次后,GC堆的空间由5M变为了6M,说明初始化堆空间不够使,可以自动扩展堆内存。

当然我们还可以通过 -Xmn 设置年轻代大小。下面我们看看年轻代中,Eden和from/to区域怎么划分。

上面程序不变,设置JVM参数, -XX:+PrintGCDetails -Xmx20m -Xmn10m -XX:SurvivorRatio=2 ,运行程序,部分结果如下图所示。

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
Java

java集合框架

转载:https://www.cnblogs.com/yangliguo/p/7476788.html 部分修改自其它博主,地址找不到了,望见谅! 集合 集合与数组 数组(可以存储基本数据类型)是用来...
Java

JavaSE-分页工具方法

借用mybatisPlus的分页对象,可以自己创建一个 此方法针对集合设置分页,与SQL无关。 ``` /* * * @param pageNo 第几页 * ...
Java

Markdown语法

本地编辑器的选择 1. 推荐文本编辑器:Typora 2. Typora编辑器的下载和安装 编辑器下载地址 安装步骤如下: 下载之后,双击打开,一直点击下一步则可安装好。 Markdown的语法 标题...
Java

Java学习 (16) Java方法篇(03)递归

递归 语法实例 递归与循环的区别 递归优缺点 循环优缺点 递归 递归就是就是自己调用自己 利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的...
Java

20 HTTP 长连接与短连接

纸上得来终觉浅,绝知此事要躬行。 Never give up until the fight is over. 永远不要放弃,要一直战斗到最后一秒。 长连接 指在一个TCP连接上可以连续发送多个数据包...
Java

feignclient各种使用技巧说明

常规的FeignClient的创建与使用我相信只要使用过spring cloud全家桶的套件的基本上都是非常熟悉了,我们只需定义一个interface,然后定义相关的远程接口方法签名及在方法上标记相关...
Java

Java学习 (25) 对象篇(05)抽象类&接口

抽象类 - 语法实例 注意点 具体讲解视频(狂神说Java) 接口 - 语法实例 具体讲解视频(狂神说Java) 抽象类 abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么该方法就...
Java

Java基础常见知识&面试题总结(上)

Java基础常见知识&面试题总结(上) 1. 基础概念与常识 1.1 Java 语言有哪些特点? 简单易学; 面向对象(封装,继承,多态); 平台无关性( Java 虚拟机实现平台无关性); ...
Java

JavaSE-对象所有字段判空

```java /* * 判断该对象是否所有属性为空 * 返回ture表示所有属性为null,返回false表示不是所有属性都是null / public static boolean isAllFi...
Java

Spring Bean生命周期

本文基于图灵课堂周瑜老师的讲解整理,包括spring bean加载的过程,主要是扫描BeanDefinition以及初始化非懒加载单例Bean两部分,源码取自SpringFramework 5.3.2...