浅谈jvm优化(暂时做个记录):
做jvm优化必须了解的基础:
1.jvm的运行参数以及参数的设置
三种:1.标准参数 2.-X参数 3.-XX参数(优化使用最高)
2.jvm的内存模型(堆内存)
年轻代,老年代,(1.7之前的永久代,1.8之后废弃)
3.GC算法的原理与优缺点以及怎么合理配置
GC常用算法:
1.引用计数法:(缺点:不能解决循环引用的问题) 2.标记清除法:(缺点:内存碎片化问题,效率问题) 3 标记压缩法:(缺点:效率问题) 4. 复制算法(缺点:内存使用率低,垃圾对象少的情况不适用)5.分代算法(jvm使用,针对不同的内存模型代使用不同的算法)
垃圾收集器:
1.串行垃圾收集器:是指使用单线程进行垃圾回收,垃圾回收时,只有一个线程在工作,并且java应用中的所有线程都要暂停,等待垃圾回收的完成。这种现象称之为STW(整个世界都停止)。一般不适用企业应用。如果查看jvm日志看到使用这种垃圾收集器可以重点查看。
2.并行垃圾收集器:并行垃圾收集器在收集的过程中也会暂停应用程序,这个和串行垃圾回收器是一样的,只是并行执行,速度更快些,暂停的时间更短一些。
3.CMS垃圾收集器:是一款并发的、使用标记-清除算法的垃圾回收器,该回收器是针对老年代垃圾回收的,通过参数
-XX:+UseConcMarkSweepGC进行设置。
4.G1垃圾收集器:G1垃圾收集器相对比其他收集器而言,最大的区别在于它取消了年轻代、老年代的物理划分,取而代之的将堆划分为若干个区域(Region),这些区域中包含了有逻辑上的年轻代、老年代区域。这样做的好处就是,我们再也不用单独的空间对每个代进行设置了,不用担心每个代内存是否足够。oracle官方计划在jdk9中将G1变成默认的垃圾收集器,以替代CMS。
今天就浅谈jvm的优化到这里,有什么不对的望 指出,下一篇再慢慢详细说明jvm参数配置,怎么定位内存溢出问题,怎么调整jvm参数进行优化,怎么对Tomcat进行优化等