Java资源分享网 - 专业的Java学习网站 学Java,上Java资源分享网
2024 JVM面试题及答案-共45道 下载
匿名网友发布于:2024-03-16 12:37:21
(侵权举报)
(假如点击没反应,多刷新两次就OK!)

2024 JVM面试题及答案-共45道 下载 图1

 

 

 

资料内容:

 

栈帧里面包含哪些东西?

局部变量表、操作数栈、动态连接、返回地址等

程序计数器有什么作用?

程序计数器是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器。这里面存的,就是当前线程执行的进度。程序计数器还存储了当前正在运行的流程,包括正在执行的指令、跳转、分支、循环、异常处理等。

字符串常量存放在哪个区域?

1、字符串常量池,已经移动到堆上(jdk8之前是perm),也就是执行intern 方法后存的地方。

2、类文件常量池, constant   pool,是每个类每个接口所拥有的,这部分数据在方法区,也就是元数据区。而运行时常量池是在类加载后的一个内存区域,它们都在元空间。

你熟悉哪些垃圾收集算法?

标记清除(缺点是碎片化)   复制算法(缺点是浪费空间)   标记整理算法(效率比前两者差)   分代收集算法(老年代一般使用标记-清除标记-整理算法,年轻代一般用复制算法)

Java里有哪些引用类型?

1、强引用这种引用属于最普通最强硬的一种存在,只有在和GC Roots断绝关系时,才会被消灭掉。

2、软引用软引用用于维护一些可有可无的对象。在内存足够的时候,软引用对象不会被回收,只有在内存不足时,系统则会回收软引用对象,如果回收了软引用对象之后仍然没有足够的内存,才会抛出内存溢出异常。可以看到,这种特性非常适合用在缓存技术上。比如网页缓存、图片缓存等。软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收,Java 虚拟机就会把这个软引用加入到与之关联的引用队列中。

3、弱引用弱引用对象相比较软引用,要更加无用一些,它拥有更短的生命周期。当JVM进行垃圾回收时,无论内存是否充足,都会回收被弱引用关联的对象。弱引用拥有更短的生命周期,Java,java. lang. ref. WeakReference类来表示。它的应用场景和软引用类似,可以在一些对内存更加敏感的系统里采用。

4、虚引用这是一种形同虚设的引用,在现实场景中用的不是很多。虚引用必须和引用队列(ReferenceQueue)联合使用。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收。实际上,虚引用的get,总是返回null

JVM怎么判断一个对象是不是要回收?

引用计数法(缺点是对于相互引用的对象,无法进行清除)   可达性分析

GC Roots有哪些? 

1GC Roots是一组必须活跃的引用。用通俗的话来说,就是程序接下来通过直接引用或者间接引用,能够访问到的潜在被使用的对象。

2GC Roots包括:Java线程中,当前所有正在被调用的方法的引用类型参数、局部变量、临时值等。也就是与我们栈帧相关的各种引用。所有当前被加载的Java 类。Java类的引用类型静态变量。运行时常量池里的引用类型常量(String Class类型)WM    内部数据结构的一些引用,比如

sun. jvm. hotspot. memory. Universe 类。用于同步的监控对象,比如调用了对象

wait()方法。JNI handles,包括global handleslocal handles

3、这些GC Roots大体可以分为三大类,下面这种说法更加好记一些:活动线程相关的各种引用。类的静态变量的引用。JNI引用。

4.有两个注意点:我们这里说的是活跃的引用,而不是对象,对象是不能作为GC Roots 的。GC过程是找出所有活对象,并把其余空间认定为无用”   而不是找出所有死掉的对象,并回收它们占用的空间。所以,哪怕JVM   的堆非常的大,基于tracingGC方式,回收速度也会非常快。

你知道哪些GC类型?

Minor GC:发生在年轻代的GCMajor GC:发生在老年代的GCFull GC:全堆垃圾回收。比如Metaspace区引起年轻代和老年代的回收。

对象都是优先分配在年轻代上的吗?

不是。当新生代内存不够时,老年代分配担保。而大对象则是直接在老年代分配。

你了解过哪些垃圾收集器?

年轻代Serial垃圾收集器(单线程,通常用在客户端应用上。因为客户端应用不会频繁创建很多对象,用户也不会感觉出明显的卡顿。相反,它使用的资源更少,也更轻量级。)   ParNew垃圾收集器(多线程,追求降低用户停顿时间,适合交互式应用。)   Parallel Scavenge垃圾收集器(追求CPU吞吐量,能够在较短时间内完成指定任务,适合没有交互的后台计算。)

老年代Serial Old 垃圾收集器Parallel Old垃圾收集器CMS 垃圾收集器(以获取最短GC停顿时间为目标的收集器,它在垃圾收集时使得用户线程和GC线程能够并发执行,因此在垃圾收集过程中用户也不会感到明显的卡顿。)

说说CMS垃圾收集器的工作原理

Concurrent mark sweep(CMS)收集器是一种年老代垃圾收集器,其最主要目标是获取最短垃圾回收停顿时间,和其他年老代使用标记-整理算法不同,它使用多线程的标记-清除算法。最短的垃圾收集停顿时间可以为交互比较高的程序提高用户体验。CMS工作机制相比其他的垃圾收集器来说更复杂