首先类加载的过程:加载验证准备解析初始化

类加载器:

jvm内存模型图:

空着,等以后补上

jvm垃圾收集器

目前只知道,parnew,cms,g1

parnew新生代垃圾回收器,复制算法

cms复制整理算法

相关概念:年轻代(eden,s0,s1),老年代,永久代

minorGC年轻代 ,fullGC 全部gc,作用在老年代

年轻代的gc停顿时间短,老年代停顿时间长

优化思路尽量让短时间存活的对象保存在年轻代,如果是大对象直接进入老年代,避免频繁移动。

避免出现动态年龄规划,进入老年代

避免出现s区内存大小达不到eden区存活对象的大小导致对象直接进入老年代在JVM内存分配中,有几个参数是比较核心的,如下所示。

-Xms:Java堆内存的大小
-Xmx:Java堆内存的最大大小
-Xmn:Java堆内存中的新生代大小,扣除新生代剩下的就是老年代的内存大小了
-XX:PermSize:永久代大小
-XX:MaxPermSize:永久代最大大小
-Xss:每个线程的栈内存大小

模拟参数: -Xms512M -Xmx512M -Xmn256M -Xss1M -XX:PermSize=128M -XX:MaxPermSize=128M

parnew垃圾收集器特点:

适用于程序内存小,平均对象存活时间短,能和cms配合使用,适用于新生代。

复制算法,将内存分为两块s0,s1,当eden区满了,就把存活对象复制移动到s0或s1区保证每次有一个区是空的,清除eden区,没有垃圾碎片。stw时间短。

1.关于动态年龄审核

2.关于大于50%直接进入老年区

3.大内存对象直接进入老年区

4.15次young gc之后还存活的对象,直接进入老年代

cms垃圾收集器特点:

内存标记,内存移动整理,多线程处理,重复标记,最后再进行内存回收。

标记清除整理算法:

1.将gcroot直接引用的对象进行标记,stw

2.不stw,和系统并行,追踪第一步标记gcroot的,会有新的对象进来,标记变成垃圾的。

3.判断被标记对象是否可达,改动对象从存活到垃圾的对象,就会被清理掉了

4.清理前几个阶段被标记的对象。

g1垃圾回收器特点:

大内存空间使用最佳,大内存使用parnew的时候清理空间时间会长一点,g1可以设置停顿多少时间进行清理空间,做到用户无感知。

g1内存分配,把内存分成2048分region

g1对象空间分代和上面一样,也是分老年代,青年代。

g1运行原理也是eden满了就放入s0,s1,达到年龄审查就进入老年代

g1区大对象有单独的管理大对象的region。

进入老年代的原因和上面一样,不过大对象是直接在eden区了。

老年代垃圾回收:

1.初始标记

2.并发标记
3.重新标记
4.混合回收

最新文章

  1. solr服务(搜索服务)
  2. 安全框架 SpringSecurity 和 Shiro 对比
  3. FragmentHelper
  4. windows下clang的安装与使用
  5. Unity3D开发之NGUI点击事件穿透响应处理
  6. 通过css3实现开关选择按钮
  7. mtk的安卓手机刷机时出现的错误信息
  8. iOS - OC NSProcessInfo 系统进程信息
  9. go bufio
  10. 使用Flask 生成中文图片验证码
  11. 主流页面编辑器比对:TinyMCE VS FCKeditor
  12. 【codeforces 242E】XOR on Segment
  13. Immunity Debugger学习
  14. 《深入.NET平台和C#编程》内部测试题-笔试试卷答案
  15. hash、hashchange事件
  16. Spring Boot中使用@Scheduled创建定时任务
  17. 解决 Error: ENOSPC: System limit for number of file watchers reached
  18. 斯特灵(Stirling)数
  19. js 多个事件的绑定及移除(包括原生写法和 jquery 写法)
  20. 「学习笔记」wqs二分/dp凸优化

热门文章

  1. 使用mobaXtrem显示CentOS图形
  2. 每日总结:charcter方法(2021.10.5)
  3. 关于十二生肖的数学发现(C++)
  4. SudokuSolver 1.0:用C++实现的数独解题程序 【一】
  5. python查询对像所有方法
  6. java中this关键字总结
  7. JVM:内存模型
  8. Beta阶段第八次会议
  9. 021中国大学生程序设计竞赛(CCPC)- 压力测试赛题解
  10. Go语言核心36讲(Go语言进阶技术十三)--学习笔记