JAVA ---- JVM

JAVA ---- JVM

 

 1.方法区(Method Area):共享区间 所有线程共享,该区域储存所有定义的方法的信息<所有字段,方法字节码,以及一些特殊的方法如构造函数,接口代码都在此定义>

静态变量 + 常量 + 类信息(构造方法/接口定义) + 运行时常量池存放在方法区

2.Java栈(Java stack):栈内存,主管Java程序的运行,在线程创建时创建,生命周期跟随线程的生命周期,线程结束栈内存释放;对于栈来说,不存在垃圾回收问题;

    8种基本数据类型的的变量 + 对象的引用变量 + 实例方法都是在函数的栈内存中分配

运行原理:先进后出,后进先出

3.本地方法接口:融合不同的编程语言为Java所用

4.PC寄存器:每个线程都有一个,是线程私有的,就是一个指针,指向方法区中的方法字节码

5.堆:分为三部分----新生+养老+永久

JAVA ---- JVM

 6.JVM内存垃圾回收算法

    1>1.复制算法 (用于新生代)-----------占用内存大

    2>标记清除算法 (用于老年代)-----------效率低,易产生磁盘碎片

    3>3.标记整理压缩算法 (用于老年代)-------代价高,效率低

7.永久区:常驻内存

    Jdk1.6及以前  :有永久代,常量池1.6在方法区

    Jdk1.7  :             有永久代,常量池1.7在堆

    Jdk1.8及以后  :无永久代,常量池1.8在原空间