java jvm gc常用参数

推荐用法

-XX:+PrintGCDetails  -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -Xloggc:/home/gc.log

1、-verbose:gc



这个参数会输出虚拟机中GC的情况.使用后输出如下:
[Full GC 168K->97K(1984K), 0.0253873 secs] 
箭头前后的数据168K和97K分别表示垃圾收集GC前后所有存活对象使用的内存容量,说明有168K-97K=71K的对象容量被回收,
括号内的数据1984K为堆内存的总容量,收集所需要的时间是0.0253873秒。



2、-XX:+PrintGC 

功能同-verbose:gc,可以认为-verbose:gc 是 -XX:+PrintGC的别名。
另外,前者是稳定版本(参见:http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html),
后者是非稳定版本,可能在未通知的情况下删除,且被标记为manageable(意味着这些参数可以在程序运行期间动态调整。),可以通过如下三种方式修改。
2.1、com.sun.management.HotSpotDiagnosticMXBean API
2.2、JConsole
2.3、jinfo -flag
参见:http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html




3、-XX:+PrintGCDetails 

[GC [PSYoungGen: 1048640K->174693K(1223360K)] 1048640K->218587K(4019584K), 0.0918800 secs] [Times: user=1.13 sys=0.17, real=0.09 secs] 


可以认为是-XX:+PrintGC的更详细版本,且更详细,包含以内内容:
1)会打印具体垃圾回收算法,如PSYoungGen。打印内容与具体垃圾回收算法有关。-XX:+PrintGC 显示的内容与垃圾回收算法无关。
2)会打印额外的垃圾回收时间。如[Times: user=1.13 sys=0.17, real=0.09 secs]  。详细日志的“Times”部分包含了GC所使用的CPU时间信息,
分别为操作系统的用户空间和系统空间所使用的时间。同时,它显示了GC运行的“真实”时间(0.09秒是0.0929090秒的近似值)。
如果CPU时间(译者注:1.13秒+0.17,秒)明显多于”真实“时间(译者注:0.09秒),我们可以得出结论:GC使用了多线程运行。
这样的话CPU时间就是所有GC线程所花费的CPU时间的总和。




推荐上面3个参数使用-XX:+PrintGCDetails  。


4、-XX:+PrintGCTimeStamps和-XX:+PrintGCDateStamps 

例子:
2017-05-18T18:34:04.568+0800: 20.309: 
[GC [PSYoungGen: 1048640K->174716K(1223360K)] 1048640K->218591K(4019584K), 0.0940440 secs] [Times: user=1.29 sys=0.16, real=0.09 secs]


使用-XX:+PrintGCDateStamps可以将时间和日期也加到GC日志中。如上个例子中的2017-05-18T18:34:04.568+0800 
使用-XX:+PrintGCTimeStamps表示自JVM启动至今的时间戳会被添加到每一行中,如上个例子中的20.309 。
推荐这两个参数同时使用。PrintGCDateStamps只有jdk16之后的版本才可以用。


5、-Xloggc 

输出gc log日志到固定目录的文件下。如-Xloggc:/search/gc.log  


6、-XX:+PrintGCApplicationStoppedTime 

打印垃圾回收期间程序暂停的时间.
如:
Total time for which application threads were stopped: 0.0730640 seconds


7、-XX:+PrintHeapAtGC

在进行GC的前后打印出堆的信息
已标记关键词 清除标记
课程简介: 历经半个多月的时间,Debug亲自撸的 “企业员工角色权限管理平台” 终于完成了。正如字面意思,本课程讲解的是一个真正意义上的、企业级的项目实战,主要介绍了企业级应用系统中后端应用权限的管理,其中主要涵盖了六大核心业务模块、十几张数据库表。 其中的核心业务模块主要包括用户模块、部门模块、岗位模块、角色模块、菜单模块和系统日志模块;与此同时,Debug还亲自撸了额外的附属模块,包括字典管理模块、商品分类模块以及考勤管理模块等等,主要是为了更好地巩固相应的技术栈以及企业应用系统业务模块的开发流程! 核心技术栈列表: 值得介绍的是,本课程在技术栈层面涵盖了前端和后端的大部分常用技术,包括Spring Boot、Spring MVC、Mybatis、Mybatis-Plus、Shiro(身份认证与资源授权跟会话等等)、Spring AOP、防止XSS攻击、防止SQL注入攻击、过滤器Filter、验证码Kaptcha、热部署插件Devtools、POI、Vue、LayUI、ElementUI、JQuery、HTML、Bootstrap、Freemarker、一键打包部署运行工具Wagon等等,如下图所示: 课程内容与收益: 总的来说,本课程是一门具有很强实践性质的“项目实战”课程,即“企业应用员工角色权限管理平台”,主要介绍了当前企业级应用系统中员工、部门、岗位、角色、权限、菜单以及其他实体模块的管理;其中,还重点讲解了如何基于Shiro的资源授权实现员工-角色-操作权限、员工-角色-数据权限的管理;在课程的最后,还介绍了如何实现一键打包上传部署运行项目等等。如下图所示为本权限管理平台的数据库设计图: 以下为项目整体的运行效果截图: 值得一提的是,在本课程中,Debug也向各位小伙伴介绍了如何在企业级应用系统业务模块的开发中,前端到后端再到数据库,最后再到服务器的上线部署运行等流程,如下图所示:
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页