码迷,mamicode.com
首页 > 其他好文 > 详细

jvm

时间:2018-06-30 12:55:04      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:back   line   IV   round   深入理解java   ==   直接   技术分享   cond   

内存模型

《深入理解java虚拟机》

 

技术分享图片

 

包括新生代和老年代,不包括元数据区

技术分享图片

在Minor GC时会将新生代中还存活着的对象复制进一个Survivor中,然后对Eden和另一个Survivor进行清理。所以,平常可用的新生代大小为Eden的大小+一个Survivor的大小 S0=S1

分配担保机制:当Minor GC时,新生代存活的对象大于Survivor的大小时,这时一个Survivor装不下它们,那么它们就会直接进入老年代

new大对象 ?

 

GC经验值:

Minor GC 执行快 (50 ms内). 
Minor GC 执行不频繁 (大概10s 执行一次). 
Full GC 执行快 (1 second内). 
Full GC 执行不频繁 (10 minutes 一次).

 

非堆==方法区

  只包含Metaspace/Perm

存放类的方法和名称等 静态数据

非堆也会出发GC (哪种GC?)

 

设置非堆的大小

  • -XX:MinMetaspaceFreeRatio 扩大空间的最小比率,当GC后,内存占用超过这一比率,就会扩大空间
  • -XX:MaxMetaspaceFreeRatio 缩小空间的最小比率,当GC后,内存占用低于这一比率,就会缩小空间

 

虚拟机栈

jvm以栈帧为单位保存线程的运行状态。每当启动一个新线程时 java虚拟机都会为它分配一个java栈。

虚拟机只会对java栈执行两种操作:以栈帧为单位的压栈或者出栈。也就是说个数由线程的上线决定。
还有就是栈帧由三部分组成的,局部变量区,操作数栈和帧数据区。 局部变量区和操作数栈要视对应的方法而定,它们是按照字长计算的。

技术分享图片

线程引用多个栈帧,栈帧中的操作数区引用堆中的对象

 

jvm

标签:back   line   IV   round   深入理解java   ==   直接   技术分享   cond   

原文地址:https://www.cnblogs.com/yszzu/p/9246340.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!