脚本宝典收集整理的这篇文章主要介绍了JVM,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
Java内存模型规定所有变量都存储在主内存中,每个线程还有自己的工作内存
JMM决定一个线程对变量的写入何时对另一个线程可见。
1、复制清除算法 Copinng
将内存划分为两部分,每次使用一部分,将存活的对象复制到另一部分,再将该部分对象清除
可用内存小
2、标记清除算法 Mark-Sweep
分为标记阶段和清除阶段,本次标记,下次清除
内存碎片化
3、标记整理算法 Mark-Compact
将存活对象移动到一边,清除这个边界以外的对象
若移动次数多,效率低
4、分代收集算法
GC:负责无用数据回收的垃圾回收器
可达性分析算法:通过GC Root对象作为起点进行搜索,如果GC Root和一个对象之间没有可达路径,则该对象是不可达的。不可达对象不一定成为可回收对象
1)Minor GC:从年轻代(包括Eden、Survivor区)回收内存。
A、当JVM无法为一个新的对象分配内存的时候,越容易触发Minor GC。所以分配率越高,内存越来越少,越频繁执行Minor GC B、执行Minor GC操作的时候,不会影响到永久代(Tenured)。从永久代到年轻代的引用,被当成GC Roots,从年轻代到老年代的引用在标记阶段直接被忽略掉。
2)Major GC:清理整个老年代,当eden区内存不足时触发。
3)Full GC:清理整个堆空间,包括年轻代和老年代。当老年代内存不足时触发
年轻对象放在eden区,当第一次GC后,如果对象还存活,放到survivor区,此后,每GC一次,年龄增加1,当对象的年龄达到阈值,就被放到tenured老年区。-XX:MaxTenuringThreshold
阈值设置。如果想让对象留在年轻代,可以设置比较大的阈值。
通过设置合理的eden区,survivor区及使用率,可以将年轻对象保存在年轻代,从而避免full GC,使用-Xmn
设置年轻代的大小
占用内存比较多的对象,在老年代为其分配内存。若在年代为其分配内存,年轻代内存不够,就要在Eden区移动大量对象到老年代,但这些对象可能很快消亡,导致 full GC
设置最小堆和最大堆:-Xmx
和-Xms
稳定的堆大小堆垃圾回收是有利的。
获得一个稳定的堆大小的方法是设置-Xms和-Xmx的值一样,即最大堆和最小堆一样,如果这样子设置,系统在运行时堆大小理论上是恒定的,稳定的堆空间可以减少GC次数,因此,很多服务端都会将这两个参数设置为一样的数值。
稳定的堆大小虽然减少GC次数,但是增加每次GC的时间,因为每次GC要把堆的大小维持在一个区间内。
一个不稳定的堆并非毫无用处。在系统不需要使用大内存的时候,压缩堆空间,使得GC每次应对一个较小的堆空间,加快单次GC次数。基于这种考虑,JVM提供两个参数,用于压缩和扩展堆空间。
-XX:MinHeapFreeRatio
参数用于设置堆空间的最小空闲比率。默认值是40,当堆空间的空闲内存比率小于40,JVM便会扩展堆空间
-XX:MaxHeapFreeRatio
参数用于设置堆空间的最大空闲比率。默认值是70, 当堆空间的空闲内存比率大于70,JVM便会压缩堆空间。
当-Xmx和-Xmx相等时,上面两个参数无效
通过增大吞吐量提高系统性能,可以通过设置并行垃圾回收收集器。
-XX:+UseParallelGC
:年轻代使用并行垃圾回收收集器。这是一个关注吞吐量的收集器,可以尽可能的减少垃圾回收时间。
-XX:+UseParallelOldGC
:设置老年代使用并行垃圾回收收集器。
尝试使用大的内存分页:使用大的内存分页增加CPU的内存寻址能力,从而系统的性能。-XX:+LargePageSizeInBytes
设置内存页的大小
使用非占用的垃圾收集器。-XX:+UseConcMarkSweepGC
老年代使用CMS收集器降低停顿。
-XXSurvivorRatio=3
,表示年轻代中的分配比率:survivor:eden = 2:3
JVM性能调优的工具:
jps(Java Process Status):输出JVM中运行的进程状态信息(现在一般使用jconsole)
jstack:查看java进程内线程的堆栈信息。
jmap:用于生成堆转存快照
jhat:用于分析jmap生成的堆转存快照(一般不推荐使用,而是使用Ecplise Memory Analyzer)
jstat是JVM统计监测工具。可以用来显示垃圾回收信息、类加载信息、新生代统计信息等。
VisualVM:故障处理工具
...
参考链接:https://segmentfault.com/a/1190000014395186
以上是脚本宝典为你收集整理的JVM全部内容,希望文章能够帮你解决JVM所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。