下载此文档

Java虚拟机内存分配策略.doc


文档分类:IT计算机 | 页数:约2页 举报非法文档有奖
1/2
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/2 下载此文档
文档列表 文档介绍
JVM内存分配策略
我们将介绍几个JVM中对象在分配内存是应该遵循的策略。毕竟,想要去优化程序,不仅要考虑垃圾回收的过程,还要从对象内存分配的角度减少gc的代价。
一、gc日志格式
    在这里先介绍一下gc日志的格式,分析gc日志是了解gc过程最直接的方式。对于大量的日志分析,直接查看日志文件当然不方便,我们一般会使用日志分析工具,后边会有介绍,但是对于简短的日志(如十几条),一般直接查看就行了。开启日志输出的JVM参数如下:
-XX:+PrintGCDetails //打印gc日志
-XX:+PrintGCDateStamps //打印时间
-Xloggc: //输出路径
 
    对应的日志输出格式如下(采用不同参数或不同虚拟机可能不同,但大同小异):
2014-03-09T18:10:+0800: : [GC : [DefNew: 35072K->4352K(39424K), secs] 75088K->45293K(126848K), secs] [Times: user= sys=, real= secs] 
2014-03-09T18:10:+0800: : [Full GC : [Tenured: 40941K->42890K(87424K), secs] 62210K->42890K(126848K), [Perm : 36863K->36863K(36864K)], secs] [Times: user= sys=, real= secs]
    35072K->4352K(39424K):gc前使用内存大小->gc后使用大小(该区域总大小)
    2014-03-09T18:10:+0800: gc时间
    : gc耗时
    GC :  表示停顿类型和停顿时间,如果是Full表示gc是Stop-The-World的
    DefNew: Tenured:  Perm : gc发生的区域,DefNew年轻代;Tenured年老代;Perm永久代
    Times: user= sys=, real= secs user:用户态耗时;sys:内核态耗时;real:gc从开始到结束消耗的Wall Clock Time耗时(墙钟时间,名字好怪,包括各种非运算的等待耗时和cpu耗时)
二、内存分配策略
1、对象优先在Eden分配
    新的对象大多数情况下在Eden去分配,这样在Eden区域没有足够空间时,JVM会首先进行Minor Gc,仅对Eden进行gc,并将符合条件的对象移至年老代。这样如果Eden在gc后满足新对象的空间需求,则能避免进行Full GC。
2、大对象直接进入年老代
    这一点十分好理解,多数情况下大对象的生命周期是相对较长的,而大对象如果分配在Eden,不仅占用大量空间,触发gc,还可能会在Eden区/两个 Survivor区之间来回复制,十分耗费

Java虚拟机内存分配策略 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数2
  • 收藏数0 收藏
  • 顶次数0
  • 上传人zxwziyou8
  • 文件大小15 KB
  • 时间2022-01-07