JVM初识

class 编译流程

先通过javac装载进子系统,然后加入运行时数据区,最后通过字节码执行引擎执行

运行时数据区包含什么

运行时数据区包含,堆,栈,本地方法区,方法区(元空间),程序计数器

栈帧中存放的是什么

栈帧是栈中的一小块空间
栈帧中存放的是操作数栈,局部变量表,动态链接,方法出口
操作数栈:是一个临时变量的存放空间
局部变量表,存放的是代码中的局部变量
动态链接: 把符号引用转换为直接引用,里面包含了c,C++的实现,java虚拟机可以根据符号引用转到实际的地址
方法出口:根据方法出口的信息,方法的返回值,怎么继续执行
注意:Main方法中的局部变量表存放法的是对象中的地址

什么是程序计数器

Java中的每一个线程都会有一个程序计数器,用于存放当前线程所执行到的代码,用于线程切换

为什么会有程序计数器

因为java是多线程的,程序计数器,用于记录当前线程执行到的代码位置 ,当被其他优先级更高的线程获取到了时间片,本线程就会暂停,直到再次拿到cpu的时间片,如果没有程序计数器,就会出现不知道执行到哪一行的情况,如果重新执行可能出现意想不到的错误,所以有了程序计数器

程序计数器是如何修改的

程序技术器是通过才执行引擎修改的

方法区中包含什么(1.8之后叫做元空间)

方法区中存放的是常量,静态变量,类信息

什么是本地方法栈

用navtive修饰的方法是本地方法,是用C,C++写的,java调用时内存空间就会放在本地方法区

哪些内存空间是私有的,哪些是共享的

堆和方法区是线程共享的
栈,程序计数器,本地方法栈是线程私有的

JAVA中为什么会有STW(Stop-The-World)机制,能够不使用吗?

如果不设计STW会出现前一秒这个对象是非垃圾.可是后一秒就成为了垃圾,系统会很难设计;

什么是新生代什么是老年代

新生代和老年代都是存放在堆中的,其中数据是共享的,字节码引擎会有一个垃圾回收线程(minor-GC),会专门针对新生代做垃圾回收,当进行一次垃圾回收后,没有被回收的对象,它的分代年龄就会加1 当分代年龄大于等于15时就会放入老年代.
minor-GC 他只会回收新生代
fullGC 会回收老年代

新生代中包含哪些

新生代分为Eden区 S0 S1区 当一个对象经历一次垃圾回收分代年龄就加1,当分代年龄大于等于15就会移入老年代

垃圾回收算法有哪些

垃圾回收算法有引用计数器,可达性分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值