Java面试
文章平均质量分 57
Java技术栈面试题
yunyala
后端开发工程师,熟悉Java、PHP编程语言和Redis、消息队列等中间件,喜欢写一些技术小工具。
展开
-
解答:方法中创建的对象不都是局部变量,那不就是说这些对象都存放虚拟机栈中,但是所有对象不是都在方法中创建的,那什么对象实例是放在堆中的呢?
这个对象的实例是存放在堆内存中的,而obj只是一个引用,它存放在栈帧的局部变量表中。当在方法中创建一个新的对象时,实际上会在堆内存中分配一块存储空间作为对象实例,并且在局部变量表中创建一个引用指向这个对象。需要注意的是,方法结束后,该方法中创建的局部变量和引用将会被销毁,但是在堆内存中分配的对象实例仍然存在,直到没有任何引用指向它,被垃圾回收机制回收。因此,对象实例是存放在堆内存中的,而方法中创建的局部变量和引用只是指向这些对象的一个方式。在Java中,对象的实例是存放在堆内存中的。原创 2023-10-11 20:42:27 · 56 阅读 · 0 评论 -
为什么说Java是编译与解释并存的语言
JIT编译器通常使用基于探测技术的优化方法,例如使用Profiling(性能剖析)技术来监视和分析程序的运行状况,找出热点代码(频繁被执行的代码块),然后针对热点代码进行编译优化。这样,经过JIT编译后的代码在再次执行时,无需再经过解释器解释执行,而是直接执行编译后的机器码,从而提高了程序的执行速度。JIT编译器在Java虚拟机(JVM)中扮演着重要角色,Java程序首先通过javac编译器将源代码编译为字节码文件,然后在运行时由JIT编译器将字节码转换为机器码,以提高Java程序的执行效率。原创 2023-10-10 11:44:57 · 96 阅读 · 0 评论