java虚拟机的面试问题

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

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

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

       

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值