JAVA ---- JVM
1.方法区(Method Area):共享区间 所有线程共享,该区域储存所有定义的方法的信息<所有字段,方法字节码,以及一些特殊的方法如构造函数,接口代码都在此定义>
静态变量 + 常量 + 类信息(构造方法/接口定义) + 运行时常量池存放在方法区
2.Java栈(Java stack):栈内存,主管Java程序的运行,在线程创建时创建,生命周期跟随线程的生命周期,线程结束栈内存释放;对于栈来说,不存在垃圾回收问题;
8种基本数据类型的的变量 + 对象的引用变量 + 实例方法都是在函数的栈内存中分配
运行原理:先进后出,后进先出
3.本地方法接口:融合不同的编程语言为Java所用
4.PC寄存器:每个线程都有一个,是线程私有的,就是一个指针,指向方法区中的方法字节码
5.堆:分为三部分----新生+养老+永久
6.JVM内存垃圾回收算法
1>1.复制算法 (用于新生代)-----------占用内存大
2>标记清除算法 (用于老年代)-----------效率低,易产生磁盘碎片
3>3.标记整理压缩算法 (用于老年代)-------代价高,效率低
7.永久区:常驻内存
Jdk1.6及以前 :有永久代,常量池1.6在方法区
Jdk1.7 : 有永久代,常量池1.7在堆
Jdk1.8及以后 :无永久代,常量池1.8在原空间