jvm总结

作者: lesline | 来源:发表于2017-11-26 11:18 被阅读20次

讲jvm之前先明确下串行、并行、并发的区别:

  • 并行(Parallel): 必须多核支持
  • 并发 (Concurrent):不需要多核支持
    举个粟子:
    你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。
    你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
    你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。

回收策略:

  1. 引用计数:对象有一个引用就增加计数,不能处理循环引用的情况,现在已不使用
  2. 标记清除:年老代中使用
  3. 标记-整理:分代中年轻代中使用

各收集器选择:

  • 串行收集器 Serial GC:client 虚拟机、windows 32位的jvm或运行在单处理器上的JVM
  • 并行 Parallel GC:server虚拟机、多CPU的Unix机器以及64位虚拟机
  • 并发标记清除 CMS:对停顿比较敏感时使用,并行 Parallel GC追求吞吐量,CMS追求,小停顿
  • 垃圾优先 G1:JDK1.7u4正式出现,针对内存大于4GB时使用

注意:
1.8之后永久代(Permanent Generation)被元空间(MetaSpace)替代:
永久代中的静态变量和常量放到堆中
永久代中的类信息放到无空间中

-XX:useParalleGC/UseParallelOldGC启用Parallel
-XX:UseConcMarkSweepGC/ UseParNewGC启用CMS
堆空间小于4GB时,CMS性能好于G1

相关文章

网友评论

      本文标题:jvm总结

      本文链接:https://www.haomeiwen.com/subject/cgrkbxtx.html