垃圾收集器与内存分配策略(五)之垃圾日志与常见参数
2019独角兽企业重金招聘Python工程师标准>>>
垃圾收集器与内存分配策略(五)——垃圾日志与常见参数
理解GC日志
每个收集器的日志格式都可以不一样,但各个每个收集器的日志都维持一定的共性。如下面二段日志:
33.125: [GC [DefNew: 3324K->152K(3712K), 0.0025925 secs] 3324K->152K(11904K), 0.0031680 secs] 100.667: [Full GC [Tenured: 0K->210K(10240K), 0.0149142 secs] 4603K->210K(19456K), [Perm : 2999K->2999K(21248K)], 0.0150007 secs] [Times: user=0.01 sys=0.00, real=0.02 secs]
- 最前面的数字“33.125:”和“100.667:”代表了GC发生的时间,这个数字的含义是从Java虚拟机启动以来经过的秒数。
- GC和Full GC说明此次垃圾垃圾收集停顿的类型。如果有“Full”说明这次GC是发生了Stop-The-World的。如果是调用System.gc()方法触发的收集,那么这里将显示“[ Full GC(System) ]”
- 接下来的“[DefNew”、“[Tenured”、“[Perm”表示GC发生的区域,这里显示的区域名称与使用的GC收集器是密切相关的。
(1).上面样例所使用的Serial收集器中的新生代名为“Default New Generation”,所以显示的是“[DefNew ]”。
(2).如果是ParNew收集器,新生代名称就会变为“[ParNew”,意为“Parallel New Generation”。
(3).如果采用Parallel Scavenge收集器,那它配套的新生代称为“PSYoungGen”,老年代和永久代同理,名称也是由收集器决定的。 - .后面方括号内部的“3324K->152K(3712K)”含义是“GC前该内存区域已使用容量-> GC后该内存区域已使用容量 (该内存区域总容量)”。
- 而在方括号之外的“3324K->152K(11904K)”表示“GC前Java堆已使用容量 -> GC后Java堆已使用容量 (Java堆总容量)”。
- 再往后,“0.0025925 secs”表示该内存区域GC所占用的时间,单位是秒。
下面这段新生代收集器ParNew的日志也会出现“[Full GC”(这一般是因为出现了分配担保失败之类的问题,所以才导致STW)。
[Full GC 283.736: [ParNew: 261599K->261599K(261952K), 0.0000288 secs]
垃圾收集参数总结
-XX:+< option > 启用选项
-XX:-< option > 不启用选项
-XX:< option > = < number >
-XX:< option > = < string >
参数 | 描述 |
---|---|
-XX:+UseSerialGC | Jvm运行在Client模式下的默认值,打开此开关后,使用Serial + Serial Old的收集器组合进行内存回收 |
-XX:+UseParNewGC | 打开此开关后,使用ParNew + Serial Old的收集器进行垃圾回收 |
-XX:+UseConcMarkSweepGC | 使用ParNew + CMS + Serial Old的收集器组合进行内存回收,Serial Old作为CMS出现“Concurrent Mode Failure”失败后的后备收集器使用。 |
-XX:+UseParallelGC | Jvm运行在Server模式下的默认值,打开此开关后,使用Parallel Scavenge + Serial Old的收集器组合进行回收 |
-XX:+UseParallelOldGC | 使用Parallel Scavenge + Parallel Old的收集器组合进行回收 |
-XX:SurvivorRatio | 新生代中Eden区域与Survivor区域的容量比值,默认为8,代表Eden:Subrvivor = 8:1 |
-XX:PretenureSizeThreshold | 直接晋升到老年代对象的大小,设置这个参数后,大于这个参数的对象将直接在老年代分配 |
-XX:MaxTenuringThreshold | 晋升到老年代的对象年龄,每次Minor GC之后,年龄就加1,当超过这个参数的值时进入老年代 |
-XX:UseAdaptiveSizePolicy | 动态调整java堆中各个区域的大小以及进入老年代的年龄 |
-XX:+HandlePromotionFailure | 是否允许新生代收集担保,进行一次minor gc后, 另一块Survivor空间不足时,将直接会在老年代中保留 |
-XX:ParallelGCThreads | 设置并行GC进行内存回收的线程数 |
-XX:GCTimeRatio | GC时间占总时间的比列,默认值为99,即允许1%的GC时间,仅在使用Parallel Scavenge 收集器时有效 |
-XX:MaxGCPauseMillis | 设置GC的最大停顿时间,在Parallel Scavenge 收集器下有效 |
-XX:CMSInitiatingOccupancyFraction | 设置CMS收集器在老年代空间被使用多少后出发垃圾收集,默认值为68%,仅在CMS收集器时有效,-XX:CMSInitiatingOccupancyFraction=70 |
-XX:+UseCMSCompactAtFullCollection | 由于CMS收集器会产生碎片,此参数设置在垃圾收集器后是否需要一次内存碎片整理过程,仅在CMS收集器时有效 |
-XX:+CMSFullGCBeforeCompaction | 设置CMS收集器在进行若干次垃圾收集后再进行一次内存碎片整理过程,通常与UseCMSCompactAtFullCollection参数一起使用 |
-XX:+UseFastAccessorMethods | 原始类型优化 |
-XX:+DisableExplicitGC | 是否关闭手动System.gc |
-XX:+CMSParallelRemarkEnabled | 降低标记停顿 |
-XX:LargePageSizeInBytes | 内存页的大小不可设置过大,会影响Perm的大小,-XX:LargePageSizeInBytes=128m |
Client、Server模式默认GC
新生代GC方式 | 老年代和持久带GC方式 | |
---|---|---|
Client | Serial串行GC | Serial Old串行GC |
Server | Parallel Scavenge 并行回收GC | Parallel Old 并行GC |
Sun/Oracle JDK GC组合方式
转载于:https://my.oschina.net/PrivateO2/blog/1575788
垃圾收集器与内存分配策略(五)之垃圾日志与常见参数相关推荐
- jvm(3)-垃圾收集器与内存分配策略
[0]README 0.1)本文部分文字转自:深入理解jvm,旨在学习 垃圾收集器与内存分配策略 的基础知识: [1]垃圾回收概述 1)GC(Garbage Collection)需要完成的3件事情: ...
- java eden分配参数,JVM垃圾收集器与内存分配策略,
垃圾收集器与内存分配策略 对象存活判断 引用计数算法 给对象添加一个计数器,每有一个引用+1,当引用失效-1,若为0则不在被使用. 可达性分析算法 对象是否可到达GC roots 或者说GC root ...
- 【深入理解Java虚拟机学习笔记】第三章 垃圾收集器与内存分配策略
最近想好好复习一下java虚拟机,我想通过深读 [理解Java虚拟机 jvm 高级特性与最佳实践] (作者 周志明) 并且通过写一些博客总结来将该书读薄读透,这里文章内容仅仅是个人阅读后简短总结,加强 ...
- java_opts gc回收器_jvm垃圾收集器与内存分配策略
垃圾收集器与内存分配策略: 以下参考周志明的<>. 判断对象是否存活: 引用计数:通过判断对象被引用的次数(为0,则表示不可被使用),但这很难解决对象相互循环引用的问题. 根搜索算法:即采 ...
- jvm垃圾收集器与内存分配策略
2019独角兽企业重金招聘Python工程师标准>>> 垃圾收集器与内存分配策略: 以下参考周志明的<<深入理解jvm高级特性与最佳实践>>. 判断对象是否存 ...
- JVM2:垃圾收集器与内存分配策略
垃圾收集器与内存分配策略 文章目录 垃圾收集器与内存分配策略 对象回收 引用计数算法 可达性分析算法 四种引用类型 生存与死亡 回收方法区 垃圾收集算法 标记清除法 复制算法 标记-整理算法 HotS ...
- JVM:垃圾收集器与内存分配策略
垃圾收集器与内存分配策略 1.对象已死吗 1).引用计数算法 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器为0的对象就 ...
- java虚拟机读书笔记 第三章 垃圾收集器和内存分配策略
java虚拟机读书笔记 第三章 垃圾收集器和内存分配策略 GC需要完成的三件事情:哪些内存需要回收.什么时候回收.如何回收 垃圾回收器在对堆进行回收前,首先要确定那些对象存活,哪些对象已经死去,判断的 ...
- 03-1 手敲八千字,认识垃圾收集器必须清楚的前置知识【垃圾收集器的内存分配策略】
03-1 50问!了解垃圾收集器必须清楚的前置知识--垃圾收集器的内存分配策略 author:陈镇坤27 创建时间:2021年12月27日01:58:45 字数:7932 文章目录 03-1 50问! ...
最新文章
- WinRT界面控件Essential Studio上如何选择时间范围
- 周华健,歌声伴我长大(一)
- java构造函数使用方法总结
- Python访问MySQL数据库并实现其增删改查功能
- 【STM32】位带原理分析和应用
- python scrapy框架爬虫_Python Scrapy爬虫框架
- 三星Galaxy S22系列屏幕规格曝光:顶配版将配备LTPO屏幕
- source insight 4 破解
- HTML5CSS3基础:CSS选择器与其伪类(6)
- 高企认定人员及研发费要求?
- 各种艺术字、图片在线制作
- 光学雨量计应用降雨量检测
- VR带看是什么?VR带看有哪些功能优势?
- thinkphp更新mysql数据库表_ThinkPHP 创建新表、创建数据库讲解
- [Z] 10 种必知必会的软件开发工具
- 智能辅助系统在配电室内的施工方案 安装位置
- 热部署工具jrebel-and-xrebel-for-intellij使用方法
- 宿舍怎样推行5s管理制度?
- linux开源软件_使用Linux和免费的开源软件进行专业媒体制作
- 蓝桥杯单片机省赛第十一届赛题二
热门文章
- 《JavaScript面向对象编程指南》——1.7 训练环境设置
- Python操作Redis的5种数据类型
- linux中软件包管理
- 阿里云服务器下安装LAMP环境(CentOS Linux 6.3) 安装与配置 Apache 服务
- idea 设置加载多个资源文件,显示本地图片
- textarea换行符转换
- 分布式版本控制系统Git的安装与使用
- 高性能流媒体服务器EasyDSS前端重构(二) webpack + vue + AdminLTE 多页面提取共用文件, 优化编译时间...
- 【BZOJ-3156】防御准备 DP + 斜率优化
- 机器学习中的相似性度量 (转)