JVM复习面试题

JVM

1、JVM会存在内存泄露吗?

2、64位和32位JVM中,int类型变量的长度是多少?

3、32位和64位JVM中,最大堆内存是多少?

4、JRE、JDK、JVM、JIT之间有什么不同

5、JVM内存区域

6、Java中堆和栈的区别?

7、描述一下JVM加载class文件的原理机制

垃圾回收

简述一下垃圾回收机制

垃圾回收的优点

  • 程序员不需要花费精力来管理内存的分配
  • 防止内存泄露造成系统崩溃

为什么要垃圾回收

  • Java的api没有提供任何显示垃圾回收的操作
  • 防止内存泄露造成系统崩溃

垃圾回收的基本原理,垃圾回收器可以马上回收内存吗?可以主动通知虚拟机进行垃圾回收吗?

  • 当我们创建一个对象时,GC线程就开始监控这个对象
  • GC通过有向图的方式记录和管理堆中的对象,判断堆中的对象是否是“不可达”对象,当确定这些对象是不可达对象是垃圾回收线程就会回收这些对象
  • 可以,System.gc,但不保存垃圾回收线程一定执行

Java中的引用类型

  • 强引用:Object object=new Object() 内存溢出也不会回收该对象
  • 弱引用:WeakReference,有用但不是必须的对象,在下一次GC时会被回收
  • 软引用:有用但不是必须的对象,在发生内存溢出之前会被回收
  • 虚引用:虚引用的用途是在 gc 时返回一个通知

什么是gc roots

  • 全称:garbage collector roots,特指垃圾收集器的对象

gc roots的基本原理

  • gc roots的基本思路就是以这些垃圾回收器的对象作为起始点,从这些起始点自上而下开始搜索(走过的路径叫作引用链),假如说从这些起始点到一个对象不可达,就说明此对象不可用

怎么判断对象是否可以被回收

  • 引用计数法:每个对象都有一个计数器,当对象计数器为0时,就说明该对象可以被回收(缺陷:不能解决循环引用的问题)
  • 可达性分析:利用gc roots的原理

JVM的永久代会发生垃圾回收吗

  • 垃圾回收一般不会发生在永久代中,如果永久代满了或者超过临界值会触发“重GC”也就是完全垃圾回收

垃圾回收算法

  • 复制算法
    • 优点:简单高效,不用考虑内碎片
    • 缺点:可用内存缩小为原来的一半,对应存活率高的对象需要频繁复制
  • 引用计数法
  • 标记清除算法(常见的一种垃圾回收算法)
    • 优点:简单,不需要移动对象
    • 缺点:标记、清除效率低
  • 标记压缩算法
    • 优点:解决了标记清除算法产生的内碎片
    • 缺点:需要移动局部对象,降低了效率
  • 分代收集算法
    • 新生区,老年区,永久代

垃圾回收器

  • CMS

CMS垃圾回收器

  • 基于标记清除算法实现的

新生代和老年代的垃圾回收器都有哪些区别

  • 新生代垃圾回收器一般采用复制算法
    • 优点:效率高
    • 缺点:内存利用率低
  • 老年代垃圾回收器一般采用标记压缩算法

内存分配策略

java的内存分配和回收

  • 内存分配通常是在堆上,对象一般优先在Eden区进行分配

虚拟机类加载机制

简述JVM加载Class文件的原理机制

  • java中所有的类都是要被类加载器加载到jvm虚拟机中才能执行,而它的主要作用就是将编译器生成的字节码文件从磁盘加载到内存

  • 类加载方式

    • 隐式加载,例如:new关键字等
    • 显示加载,一般通过反射

    java的类加载是动态的,它并不会将所有的类加载为了节省内存

类加载器有哪些

  • 启动类加载器:加载java核心类库
  • 扩展类加载器:加载java的扩展库
  • 系统类加载器:根据java应用的类路径来加载java类
  • 用户自定义加载器:继承ClassLoader类的方式实现

类加载执行流程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凉水不好喝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值