1.为什么JVM
1. 面试必备 (面试时要说jdk版本)
2. 性能调优 spark hadoop
机器非常慢,但是负载很高
cpu很高
memory爆了
3. 性能监控/调整
调整运行中代码的字节码
2.内存结构 1.8
栈是私有的
堆是共享的–对象,数组是在堆里
方法区:所有线程共享 .class文件
s0 s1大小是一样的,同一时间只有一个是开启的
ccs=compressedClassSpaceSize 32位指针
odeCache native jni部分
3.常用参数
jvm参数: jinfo jstat jmap
参数类型:
-
标准参数
-
x参数
-
xx参数
-XX:[±]UseG1GC
-XX:CompressedClassSpaceSize=10383234483 -
jinfo
-Xmx == -XX:MaxHeapSize
-Xms == -XX:Initial
-Xss == -XX:ThreadStackSize
jinfo -flag
- 查看某个进程用什么GC
运行时数据区: 规范
4.垃圾回收机制以及算法
标记清除
复制
标记整理
分代垃圾回收
什么是内存泄漏
这个对象的指针一直被其他对象所持有,自动的垃圾回收机制没有办法把这一部分释放掉