JVM学习笔记

 

-------------------------再也不敢问我jVM了------------------
javac Persion.java --->编译 java.class

class文件在jvm中运行

运行时数据区是什么?
    把不同的数据放到jvm不同的区域

怎么划分?为什么要这样划分


heap堆:存放对象

每一个线程有一个java虚拟机栈

线程执行方法的过程应该可以用一个数据结构表示:栈---》先进后出
一个进程可以一个java虚拟机栈表示,
方法的执行,可以通过压栈的方式---》一个方法对应一个栈帧

每个java虚拟机线程有一个私有的pc计数器
计数器:记录每个方法运行到的栈帧
计数器执行的方法如果是不是native方法就会记录方法的执行位置,
如果是native方法,计数器就记录为空


----------------运行时常量池---------------
属于java虚拟机“方法区”的一部分,


-------------------jvm问题?---------
运行时数据区的划分?各个区域中所存储的内容?


-------------------ms题
jdk8中还有方法区吗?
方法区,中包含了运行时常量池

Method Area
jdk1.7之前--->Perm Space 永久代
jdk1.8之前--->MetaSpace 元空间

------------------java虚拟机,压栈帧,执行方法的操作过程


-------------垃圾回收
(1)jvm运行时数据区--》逻辑视图
(2)具体落地到物理内存中---》逻辑视图-->内存模型---》memory Model

* 运行时数据--->内存模型的设计
* 内存中存储数据
* 什么时候会是垃圾
* 是垃圾,按照一定的回收算法


内存模型
    存两方面的数据:1.方法区2.堆
        为啥?:这两部分是虚拟机一旦创建,就被所有线程共享的


 

 

 

JVM学习笔记_第1张图片

 

 

 

JVM学习笔记_第2张图片

你可能感兴趣的:(JVM)