- 博客(7)
- 收藏
- 关注
原创 解释器与编译器
HotSpot虚拟机采用解释器与编译器并存的架构,HotSpot内置了两种即时编译器,分别称为Client Compiler和Server Compiler或则简称为C1编译器和C2编译器。采用编译器和解释器搭配使用的方式在虚拟机中称为“混合模式(Mixed Mode)”。 解释器能够迅速的执行程序(编译代码耗时),而编译器编译成的本地代码运行效率更高,但两种编译器也有差异:Client Co
2016-10-28 15:15:43 991
转载 JVM优化之调整大内存分页(LargePage)
转载自:http://jm.taobao.org/2009/11/21/3157/什么是内存分页? CPU是通过寻址来访问内存的。32位CPU的寻址宽度是 0~0xFFFFFFFF,即4G,也就是说可支持的物理内存最大是4G。但在实践过程中,程序需要使用4G内存,而可用物理内存小于4G,导致程序不得不降低内存占用。为了解决此类问题,现代CPU引入了MMU(Memory
2016-10-25 19:45:34 7788
原创 JVM命令参数大全
参数选项 含义 -Xmssize 设置初始化堆内存大小,这个值的大小必须是1024的倍数,并且大于1M,可以指定单位k(K),m(M),g(G)。例如 -Xms6m。如果没有设置这个值,那么它的初始化大小就是年轻代和老年代的和 -Xmxsize 设置最大堆内存大小,这个值的大小必须是1024的倍数,并且大于2M,可以指定单位k(K),m(M),g(G)。默认值是根据运行时的系统配置
2016-10-18 13:12:51 2733
原创 栈上分配和TLAB
栈上分配 JVM允许将线程私有的对象打散分配在栈上,而不是分配在堆上。分配在栈上的好处是可以在函数调用结束后自行销毁,而不需要垃圾回收器的介入,从而提高系统性能。 栈上分配的一个技术基础是进行逃逸分析,逃逸分析的目的是判断对象的作用域是否有可能逃逸出函数体。另一个是标量替换,允许将对象打散分配在栈上,比如若一个对象拥有两个字段,会将这两个字段视作局部变量进行分配。 只能在server模
2016-10-14 16:06:02 5724 1
原创 MaxTenuringThreshold 和 TargetSurvivorRatio参数说明
-XX:MaxTenuringThreshold 晋升年龄最大阈值,默认15。在新生代中对象存活次数(经过YGC的次数)后仍然存活,就会晋升到老年代。每经过一次YGC,年龄加1,当survivor区的对象年龄达到TenuringThreshold时,表示该对象是长存活对象,就会直接晋升到老年代。-XX:TargetSurvivorRatio 设定survivor区的目标使用率。默认50,即sur
2016-10-12 15:33:44 7389
原创 CMS垃圾收集器
CMS收集器(Concurrent Mark Sweep),年老代垃圾收集器,最主要目标是获取最短垃圾回收停顿时间,使用多线程的标记-清除算法,实现了让垃圾收集线程和用户线程同时工作。 初始标记(CMS initial mark)只是标记一下GC Roots能直接关联的对象,速度很快,仍然需要暂停所有的工作线程。 并发标记(CMS concurrent mark)进行...
2016-10-09 19:23:24 667
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人