![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
Thxxxxxx
然鹅我不想简介自己
展开
-
即时编译器
引入多个即时编译器,是为了在编译时间和生成代码的执行效率之间进行取舍。 C1 又叫做 Client 编译器,面向的是对启动性能有要求的客户端 GUI 程序,采用的优化手段相对简单,因此编 译时间较短。 C2 又叫做 Server 编译器,面向的是对峰值性能有要求的服务器端程序,采用的优化手段相对复 杂,因此编译时间较长,但同时生成代码的执行效率较高。 从 Java 7 开始,HotSpot ...转载 2019-07-04 09:51:45 · 478 阅读 · 0 评论 -
JVM常用的参数配置
堆配置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3表示年轻代和年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如3表示Eden: 3 Survivor:...原创 2019-07-24 21:19:28 · 118 阅读 · 0 评论 -
谈谈你的GC调优思路?
基本的调优思路可以总结为: 理解应用需求和问题,确定调优目标。假设,我们开发了一个应用服务,但发现偶尔会出现性能抖动,出现较长的服务停顿。 评估用户可接受的响应时间和业务量,将目标简化为,希望GC暂停尽量控制在200ms以内,并且保证一定标准的吞吐量。 掌握JVM和GC的状态,定位具体的问题,确定真的有GC调优的必要。具体有很多方法,比如,通过jstat等工具查看GC等相关状态,可以开启GC...转载 2019-05-23 21:16:03 · 729 阅读 · 2 评论 -
为什么将老年代移动到方法区
字符串存在永久代中,容易出现性能问题和内存溢出。 类及方法的信息等比较难确定其大小,因此对于永久代的大小指定比较困难,太小容易出现永久代溢出,太大则容易导致老年代溢出。 永久代会为 GC 带来不必要的复杂度,并且回收效率偏低。 元空间不再使用虚拟机内存而是使用本地内存,元空间大小只受本地内存限制 ...原创 2019-08-23 17:00:43 · 568 阅读 · 0 评论 -
GC算法以及垃圾回收器
翻译 2019-08-21 21:33:37 · 98 阅读 · 0 评论 -
触发Full GC的原因
当年轻代晋升到老年代的对象大小,并比目前老年代剩余的空间大小还要大时,会触发Full GC; 当老年代的空间使用率超过某阈值时,会触发Full GC; 当元空间不足时(JDK1.7永久代不足),也会触发Full GC; 当调用System.gc()也会安排一次Full GC。 ...原创 2019-08-22 10:28:06 · 785 阅读 · 0 评论