如何深入理解JVM面试题中的垃圾回收机制?

2026-05-25 13:551阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计778个文字,预计阅读时间需要4分钟。

如何深入理解JVM面试题中的垃圾回收机制?

JVM(Java虚拟机)支持跨平台与跨语言执行。通过编写一个类,我们可以在不同的操作系统(如Linux、Windows、Mac OS)上执行,且效果一致。这体现了JVM的跨平台特性。JVM识别字节码,而非直接翻译代码,因此实现跨语言执行。

1、讲一讲JVM的跨平台与跨语言

跨平台

我们写的一个类,在不同的操作系统上(Linux、windows、Mac OS)执行,效果是一样的。这就是JVM的跨平台性。

跨语言

JVM只识别字节码,JVM不是翻译Java文件,而是识别class文件,把它编译成字节码在JVM上跑。这就是JVM的跨语言特征。

2、什么是JVM、与JDK有什么区别

JVM(Java虚拟机)+ Java标准开发库 = JRE (JAVA的运行时环境)

JRE (JAVA的运行时环境) + 开发调试诊断工具 = JDK

总结 : JDK 包含了 JVM

3、JVM运行时数据区有那些

运行时数据区

Java虚拟机在执行Java程序的过程中会将它所管理的内存划分为若干个不同的数据区域

JVM运行时数据区包括:

如何深入理解JVM面试题中的垃圾回收机制?

  • 程序计数器
  • Java虚拟机
  • 本地方法栈
  • 内存堆
  • 方法区
  • 运行时常量池
4、什么是内存堆?堆内存包含那些部分?

内存堆

**堆 **是JVM上最大的内存区域,我们申请的几乎所有的对象,都存储在这里

堆空间划分

  • 新生代(Eden + S0 + S1)
  • 老年代
5、什么是内存溢出

内存溢出

指JVM可用内存不足

常见的内存溢出

  • 栈溢出 --> 死递归
  • 堆溢出
  • 方法区溢出
  • 本机直接内存溢出
6、什么是内存泄漏?与内存溢出有什么关系?

内存泄漏(memory Leak)

指无用的对象继续占用内存,你没有再恰当的时机释放内存

与内存溢出的关系

如果存在严重的内存泄漏问题,随着时间的推移,则必然会引起内存溢出

内存泄漏一般是资源管理问题和程序BUG,内存溢出则是内存空间不足和内存泄漏的最终结果

7、对象头包含那些部分?

对象头一部分:用于存储对象自身的运行时数据(Mark Word)。另一部分是类型指针

如果对象是一个Java数组,那么再对象头中还有一块用于记录数组长度的数据

8、Java 8 中默认使用的垃圾手机器是什么?

Java 8默认情况下使用的是并行垃圾收集器(Parallel GC)

标签:跨平台

本文共计778个文字,预计阅读时间需要4分钟。

如何深入理解JVM面试题中的垃圾回收机制?

JVM(Java虚拟机)支持跨平台与跨语言执行。通过编写一个类,我们可以在不同的操作系统(如Linux、Windows、Mac OS)上执行,且效果一致。这体现了JVM的跨平台特性。JVM识别字节码,而非直接翻译代码,因此实现跨语言执行。

1、讲一讲JVM的跨平台与跨语言

跨平台

我们写的一个类,在不同的操作系统上(Linux、windows、Mac OS)执行,效果是一样的。这就是JVM的跨平台性。

跨语言

JVM只识别字节码,JVM不是翻译Java文件,而是识别class文件,把它编译成字节码在JVM上跑。这就是JVM的跨语言特征。

2、什么是JVM、与JDK有什么区别

JVM(Java虚拟机)+ Java标准开发库 = JRE (JAVA的运行时环境)

JRE (JAVA的运行时环境) + 开发调试诊断工具 = JDK

总结 : JDK 包含了 JVM

3、JVM运行时数据区有那些

运行时数据区

Java虚拟机在执行Java程序的过程中会将它所管理的内存划分为若干个不同的数据区域

JVM运行时数据区包括:

如何深入理解JVM面试题中的垃圾回收机制?

  • 程序计数器
  • Java虚拟机
  • 本地方法栈
  • 内存堆
  • 方法区
  • 运行时常量池
4、什么是内存堆?堆内存包含那些部分?

内存堆

**堆 **是JVM上最大的内存区域,我们申请的几乎所有的对象,都存储在这里

堆空间划分

  • 新生代(Eden + S0 + S1)
  • 老年代
5、什么是内存溢出

内存溢出

指JVM可用内存不足

常见的内存溢出

  • 栈溢出 --> 死递归
  • 堆溢出
  • 方法区溢出
  • 本机直接内存溢出
6、什么是内存泄漏?与内存溢出有什么关系?

内存泄漏(memory Leak)

指无用的对象继续占用内存,你没有再恰当的时机释放内存

与内存溢出的关系

如果存在严重的内存泄漏问题,随着时间的推移,则必然会引起内存溢出

内存泄漏一般是资源管理问题和程序BUG,内存溢出则是内存空间不足和内存泄漏的最终结果

7、对象头包含那些部分?

对象头一部分:用于存储对象自身的运行时数据(Mark Word)。另一部分是类型指针

如果对象是一个Java数组,那么再对象头中还有一块用于记录数组长度的数据

8、Java 8 中默认使用的垃圾手机器是什么?

Java 8默认情况下使用的是并行垃圾收集器(Parallel GC)

标签:跨平台