【JVM】-常见面试题总结

什么是jvm、jdk、jre?

  • jdk:编译。
  • jre:运行时环境。
  • jvm:在jre中。

jvm中分为几个区?每个区的作用?

  • 栈区:
  1. 栈区又分为java虚拟机栈和本地方法栈。
  2. 栈中主要是运行程序中的方法,存放方法的局部变量,返回类型等的内容。每个方法执行都会创建一个栈帧,用于存放局部变量表,每个方法从开始执行到执行结束都对应这一个入栈和出栈的过程。
  3. 本地方法栈是jvm调用操作系统的api,因为jvm运行也要依赖操作系统。本地方法栈主要是和操作系统相关。也是跨平台原理的关键点。
  • 堆区:
  1. 堆是所有线程的共享区域,虚拟机一启动就创建,用来存放对象的实例。
  2. 堆是垃圾回收的主要区域。
  • 方法区:
  1. 被所有线程共享的区域,用于存放已经被加载的类的信息,常量,静态变量等数据。
  2. 垃圾回收器很少光顾这个区域,主要针对常量池进行回收。
  • 程序计数器:
  1. 当前线程所执行的行号指示器,通过改变行号来执行下一条指令,每条线程拥有自己独立的程序计数器。

堆的划分?

  • 堆划分为:新生代、老年代、永久代。垃圾回收频率由多到少。
  • 新生代又分了一个年轻区,两个幸存者区。
  • 每个程序都有一个筏值,年轻区每经过一次垃圾回收,筏值就会增加1,当达到筏值,就会复制到下一个区域,到幸存区,同样道理幸存区也会有一个目标筏值,达到后,会复制到下一个区域。每次复制到下一个区域,上一个区域的对象就会被清空,下一个区域就会被内存整理的存放各个对象,内存整理就不会出现内存碎片。这就是我对复制法垃圾回收的理解。

垃圾回收常见算法?

  1. 引用计数:古老,每次创建对象,就会计数加1,删除一次,计数减一,垃圾回收就手机计数为0的对象,无法解决循环引用的问题。
  2. 复制:把内存划分为两个相等的区域,垃圾回收时,遍历当前的使用区域,把正在使用的对象复制到另一个区域中,清空上一个内存区,缺点就是需要两倍内存空间。
  3. 标记清除法:当对象创建时,将和这个对象有关的所有的对象做一个标记,然后遍历整个堆,如果有未标记的对象,就对未标记的进行垃圾回收。缺点:需要暂停整个应用,并且垃圾回收后会产生碎片。
  4. 标记整理法:结合标记清除法和复制法,解决了产生碎片的缺点。

垃圾收集器是什么?

  • 对垃圾回收算法的具体实现。
  • 对年轻代收集的:次收集。
  • 对老年代手机的:全收集。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值