1、jvm模型 jvm线程私有 栈(每个方法执行时都会创建一个栈针)、本地方法栈、程序计数器(程序执行的下一条执行),线程共享 堆(实例对象和数组)、方法区(类、常量、静态变量)
2、 jvm gc 回收算法 (1)标记-清除 算法(缺点:效率不高,会产生内存碎片),(2) 复制算法(将空间划分为2分,缺点是空间利用率低下,改进方法分为8:1:1,一个Eden两个Survivor)
(3)标记-整理算 (4) 分代回收 (新生代和老年代) jdk8以前是cms(物理分为年轻代和老年代),8以后是g1(划分为Region,逻辑上分为年轻代和老年代)
jvm 类加载机制 java文件通过java编译器编译成.class文件,类加载器将.class文件加载到jvm中,类加载就是将.class文件的二进制数据读入到内存中,
jvm 性能调优
2、java内存模型 read(从主内存中读出) load(load到工作内存) use(工作内存取出到线程) assgin(从线程assgin到工作内存) store(从工作内存中store) write(写入到主内存中)
3、volatile 保证 可见性和有序性,可以防止指令重拍 happens-before原则 内存屏障
4、jvm内存状况分析 jstat -compiler 7568
5、jconsole jconsole 5396