编程语言
首页 > 编程语言> > Java岗面试必问!我浪费了自己职业生涯的黄金5年

Java岗面试必问!我浪费了自己职业生涯的黄金5年

作者:互联网

# 三、堆空间 **基本描述** JVM启动时创建堆区,是内存管理的核心区,通常情况下也是最大的内存空间,是被所有线程共享的,几乎所有的对象实例都要在堆中分配内存,所以这里也是垃圾回收的重点空间。 **堆栈关系** ![](http://www.icode9.com/i/li/?n=2&i=images/20210704/1625382000551725.jpg) 栈是JVM运行时的单位,堆是存储单位,当栈中方法结束,相关对象失去所有引用后,不会马上被移除堆空间,要等到垃圾收集器运行的时候。 # 四、虚拟机栈 虚拟机栈(Java栈)在每个线程创建时都会生成一个虚拟机栈,栈的内部是一个个栈帧单元,对应Java方法的调用,其生命周期和线程周期保持一致。用来存储方法的局部遍历,部分执行结果,方法的调用和返回。 ![](http://www.icode9.com/i/li/?n=2&i=images/20210704/1625382001360737.jpg) 栈帧是方法执行的数据集,维持执行过程中的各种数据信息,执行的方法依次入栈,栈顶存放当前要执行的方法,执行结束后出栈,对于栈没有垃圾回收问题。 # 五、程序计数器 **基本描述** JVM中程序计数寄存器用来存储下一条将要执行指令的地址,执行引擎获取到指令后进行执行,是线程私有的。它可以看作是当前线程所执行的字节码的行号指示器。 ![](http://www.icode9.com/i/li/?n=2&i=images/20210704/1625382001195151.jpg) **前后关系** 线程在获取CPU的时间段内执行代码,但是线程随时可能没有执行完就被挂起,等到线程A再次获取CPU执行时,CPU 得知道执行到线程A的哪一个指令,程序计数器会存储该动作。 # 六、本地方法栈 本地方法栈与虚拟机栈所起到的作用是类似的,虚拟机栈为虚拟机执行Java方法,本地方法栈管理虚拟机使用到的 本地方法,在虚拟机规范中对本地方法栈中方法使用的语言、使用方式与数据结构并没有强制规定,因此具体的虚拟机可以自由实现它。HotSpot虚拟机直接就把本地方法栈和虚拟机栈合二为一。 # Ending **Tip:由于文章篇幅有限制,下面还有20个关于MySQL的问题,我都复盘整理成一份pdf文档了,后面的内容我就把剩下的问题的目录展示给大家看一下,[点击这里即可解锁全部内容!](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)** **如果觉得有帮助不妨【转发+点赞+关注】支持我,后续会为大家带来更多的技术类文章以及学习类文章!**(阿里对MySQL底层实现以及索引实现问的很多) ![](http://www.icode9.com/i/li/?n=2&i=images/20210704/1625382001329477.jpg) ![](http://www.icode9.com/i/li/?n=2&i=images/20210704/1625382002267378.jpg) 吃透后这份pdf,你同样可以跟面试官侃侃而谈MySQL。其实像阿里p7岗位的需求也没那么难(但也不简单),扎实的Java基础+无短板知识面+对某几个开源技术有深度学习+阅读过源码+算法刷题,这一套下来p7岗差不多没什么问题,还是希望大家都能拿到高薪offer吧。

标签:必问,职业生涯,com,虚拟机,线程,https,Java,执行,方法
来源: https://blog.51cto.com/u_15288207/2973790