java虚拟机的面试问题

虚拟机面试问题,大多时候会问道2个:1,类加载的原理;2,垃圾回收的机制的过程及方法;

  1,java虚拟机的5部分:堆、方法区、栈帧、程序计数器、本地方法区。首先java代码会被编译器编译成class文件,在程序加载的时候,虚拟机的类加载器会把对应的Class文件加载到内存中,寻找main方法,启动一个普通线程,生成栈帧,一个线程对应一个栈帧,用于保存对象运行过程中的所有变量以及中间变量;加载类时读取其中的一些常量等信息和class的java字节码信息放在 方法区中,方法区也被称为永久代; 当class代码的解释器遇到new命令时,会在堆中生成类的对象,头放对象的hash码、锁等信息,数据域放数据信息;程序计数器用于记录程序运行到的行数,便于多线程时即使线程切换能正确运行;本地方法区,存放C、C++语言、或一些本地方法的区域。运行方法时栈中的变量是从堆中复制一份出来的,只有运行结束后才会写会堆中。

2,堆主要存放类的对象,分新生代和老生代。垃圾回收主要就是针对堆进行的。垃圾回收常用有4方法:标记删除、复制、标记删除整理、计数法。当内存大于70%时会自动回收,也可以手动回收。JDK1.7之前垃圾回收时会中断多线程,之后可不中断多线程进行垃圾回收。

       

版权声明:程序员胖胖胖虎阿 发表于 2022年11月8日 下午11:40。
转载请注明:java虚拟机的面试问题 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...