jvm - 调优

和自甴很熟 提交于 2019-12-04 03:33:26

jvm基础:

https://www.cnblogs.com/clamp7724/p/11750764.html

 

调优这方面- -其实除了架构师基本用不到,知道基本原理和简单的调优就可以了。。。

 

调优一般是调优

方法区 和 堆

方法区: 存放方法的信息(变量,常量,类信息,运行时常量池等)

堆(GC发生在这里): 存放对象实例

 

1.堆

1.1 新生代区

1.1.1 伊甸区 (西方神话人类起源地-。-)

1.1.2 survivor from (幸存者from区)

1.1.3 survivor to (幸存者to区)

1.2 老年代区

内存比例:

新生代:老年代 = 1 : 2

伊甸区:survivor from :survivor to = 8:1:1  

 

GC机制: (survivor from 和 survivor to 直接写成from 和 to)

1. 一个对象实例A被声明后进入堆的新生代伊甸区

2. 根据GC策略(比如GC发现没有指向A的变量了,或者伊甸区满了等),A进入from区

3. from满了以后,触发Miner GC(轻GC),把from区的一部分幸存者数据放到 to区,2区互换(A还是在from区,只不过是之前的to区),清的to区(之前的老from区,没被复制到to区的都被清空了= =)。新来的开始进入新from区。

4. 新from区满了以后,重复以上步骤,15次(jvm默认次数)后, A还活着的话就会进入老年区。

6.当老年代区也满了以后,会产生full GC, jvm会停掉所有线程(STW: stop the world),开始全面清理垃圾。

 

如果A的占用空间非常大,为了防止过度频繁的轻GC(幸存者区会很快满。。。),会直接把A放到老年区。

GC的调优主要就是改变这几个区域的空间大小比例,还有GC策略,减少full GC

 

 

1区,2区   一般叫叫 from survivor 和 to survivor

 

 

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!