JVM垃圾收集搞懂原理很重要,但是连垃圾收集的日志都不懂,这tmd还分析个屁的问题啊,典型的空有理论知识,动手实践为零。本篇就来具体的学习一下JVM中的垃圾收集日志。

第一步,垃圾收集的选项

图1 JVM垃圾收集日志选项

图1中后面标有大拇指的是该图作者的推荐选项。

-XX:+PrintGCDetails参数用于告诉虚拟机在发生垃圾收集行为时打印内存回收日志,并且在进程退出的时候输出当前内存的各区域分配情况。

  1. GC, Full GC说明了这次垃圾收集的停顿类型,而不是用来区分新生代GC还是老年代GC。如果有"Full",则表示这次GC发生了"Stop-The-World"。
  2. PSYoungGen, ParOldGen,PSPermGen表示GC发生的区域,这里显示的区域名称与使用的GC收集器密切相关,不同收集器对于不同区域所显示的名称可能不同。
  3. 接下来"7307K->480K(9216K)"的含义是:GC前该内存区域已使用容量 -> GC后该内存区域已使用容量(该内存区域的总容量)
  4. "7307K->6624K(19456K)"的含义是:GC前Java堆已使用容量 -> GC后Java堆已使用容量(Java堆总容量) 。
  5. "0.0072860 secs" 表示该内存区域GC所占用的时间,单位是秒。
  6. [Times: user=0.01 sys=0.01, real=0.00 secs]:分别表示用户态消耗CPU时间, 内核态消耗CPU时间,操作从开始到结束所经过的墙钟时间。  

PS,CPU时间与墙钟时间的区别是:墙钟时间包括各种非运算的等待耗时,例如等待磁盘I/O、等待线程阻塞等;而CPU时间不包括这些耗时。当系统有多cpu或者多核的话,多线程操作会叠加这些CPU时间,所以有时看到user或sys时间超过real时间是完全正常的。

-XX:+PrintGC

-XX:+PrintGCDetails

-XX:+PrintGCDateStamps

-XX:+PrintReferenceGC

-XX:+PrintGCCause

-XX:+PrintPromotionFailure

最新文章

  1. jquery更改输入框type为密码框password
  2. 迷你DVD管理器
  3. linux+apache url大小写敏感问题
  4. 2016年省赛G题, Parenthesis
  5. Oracle数据库—— 存储过程与函数的创建
  6. Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群
  7. 设计模式之Prototype(c++)
  8. MYSQL 优化指南
  9. Unity3d 开发之 ulua 坑的总结
  10. Eclipse中GIT插件更新工程到之前版本
  11. centos7内网源站建设
  12. HTML基础(1)——样式表
  13. 【strpos】php的strpos的坑,记一次
  14. 从零开始部署一个 Laravel 站点
  15. 从fasta中提取或者过滤掉多个序列
  16. pycharm(Tip of Day)
  17. Java反射学习三
  18. Linux ftp命令的使用方法 -- 转
  19. jQuery实现列表的增加和删除
  20. 如何在获取celery中的任务执行情况

热门文章

  1. border:none;和border:0;的区别
  2. 网页制作教程:td也可以溢出隐藏显示【转】
  3. zoj 3471 Most Powerful (有向图)最大生成树 状压dp
  4. Python学习杂记_1_PyCharm使用的一些收获
  5. AC日记——队列安排 洛谷 P1160
  6. TopCoder SRM 301 Div2 Problem 1000 CorrectingParenthesization(区间DP)
  7. Wordpress笔记:背景音乐
  8. Leetcode | Construct Binary Tree from Inorder and (Preorder or Postorder) Traversal
  9. Algorithm | Vector
  10. 转:ospf学习-----SPF最短路径算法