JVM&GC基础知识
1.三种基础gc
2.什么是g1
3.g1的四个操作阶段
4 java相关术语
4.1 Millisecond
4.2 Megabyte
4.3 demo获取内存大小(见jvm配置)
4.4 finalization机制(对象终止机制)
finalize() 可达状态 可复活状态 不可达状态
4.5 Interned String 确保字符串在内存里只有一份拷贝,节省内存空间 这个内存空间指常量池

intern()在jdk 6\7\8中分别有改动
5.内存泄漏
很多时候是内存不足引起
抛出异常 OutOfMemoryError
6.GC对于不同内存引用的类型的区别
(java有四个级别的引用 强引用 Strong Reference 软引用 Soft Reference 弱引用 Weak Reference 虚引用 Phantom Reference)只有强引用是包内的 其他都是public
垃圾回收器会只尝试回收只有弱引用的对象
GC对于不同引用的类型的区别
7.Java对象头
在HotSpot虚拟机中,对象在内存中的布局可以分成对象头,实例数据,对其填充三部分
8.JIT编译器 即时编译器能够将MSIL编译成各种不同的机器代码
9.HotSpot VM
10.堆内存快照(java heap dump)
11.根集合
11.1栈是运行时的单位,而堆时存储的单位
11.2栈解决程序的运行问题,即程序如何执行、处理数据;堆解决的是存储数据的问题,即数据怎么存,存在哪
11.3java中,一个线程就会相应的对应一个线程栈
11.4根集合是栈里面的对象引用和堆内存里面的对象的集合 GC通过root来判别哪些对象需要回收,哪些对象依旧是存活的
12.崩溃文件
13.回收算法
垃圾收集针对的是堆内存里面的对象。最简单的是引用计数,针对每个对象保存一个引用计数,如果计数为0,则删除。缺点是新的对象生成就需要更新相关的计数,更重要的是无法删除循环引用
其他的算法:
14.年轻代、老年代

对象提升机制
1.对象优先分配在Eden区,如果Eden区没有足够的空间时,虚拟机执行一次Minor GC
2.大对象直接进入老年代(大对象指需要大量连续内存空间的对象)
3.长期存活的对象进入老年代
4.动态判断对象的年龄
5.
15.对象存活判断
1.引用计数
2.可达性分析 从GC roots开始向下搜索,搜索所走过的路径成为引用链,当一个对象到GCRoots没有任何引用链相连时,则证明此对象时不可用的不可达对象
16.System.gc()方法
默认下直接触发Full GC,同时堆老年代和新生代进行回收。
17.堆外内存

优点
缺点
18.finalize()方法堆垃圾回收的影响
19.markOop描述了一个对象的状态信息
20.G1术语
1.Metaspace 元空间
2.Mixed GC Event 混合GC事件
3.Reclaimable
4.RSet 跟踪指向某一个堆区内的对象引用
5.CSet 收集集合,保存一次GC中将执行垃圾回收的区间。
6.G1 Pause Time Target
7.Root Region Scan
8.PLAB 用于年轻代回收,作用是避免多线程竞争相同的数据
9.TLAB 本地分配缓存
10.Lock-free Manner 无锁竞争分配方式
11.Region 分区