1.jvm包含(方法区、堆、栈、本地方法区、程序计数器、类加载器、执行引擎)
a.方法区:线程共享的(常量池、静态变量、常量、类的信息)
b.堆:(对象实例=新生代、老年代s1,s2、永久区) OOM内存溢出
c.栈:线程私有(局部变量、实例方法、对象引用、基本类型)
d.本地方法栈:jvm调用底层本地方法如启动线程stuat0() native修饰
e.类加载器:加载class文件new类(引用放在栈内存、对象放在堆内存)
2.jvm那些区域会有垃圾回收
jvm调优就是调方法区和堆,栈、本地方法栈、程序计数器无垃圾回收
3.gc算法
a.引用计数法:当对象被创建,绑定一个计数器,每当对象被引用的计数器加1,当他的引用被删除其减1,当没有引用计数器为0,交给gc回收
b.标记-清除:标记无用对象清除
c.标记-整理:标记无用然后让存活的对象移动到一段,然后删除这短意外的内存
d.复制算法:两块相同大小的内存块,存活的对象被复制到另一个内存中,当前内存区域清空