• 常见的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运行时数据区包括:

    • 程序计数器
    • Java虚拟机
    • 本地方法栈
    • 内存堆
    • 方法区
    • 运行时常量池

    4、什么是内存堆?堆内存包含那些部分?

    内存堆

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

    堆空间划分

    • 新生代(Eden + S0 + S1)
    • 老年代

    5、什么是内存溢出

    内存溢出

    指JVM可用内存不足

    常见的内存溢出

    • 栈溢出 --> 死递归
    • 堆溢出
    • 方法区溢出
    • 本机直接内存溢出

    6、什么是内存泄漏?与内存溢出有什么关系?

    内存泄漏(memory Leak)

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

    与内存溢出的关系

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

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

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

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

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

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

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

  • 相关阅读:
    dapr离线安装
    银行智能运维探索:打造通用指标趋势预测模型
    1400*C. Given Length and Sum of Digits...(贪心)
    【ORACLE】Oracle里有“time”数据类型吗?--关于对Oracle数据类型的一点研究
    C++标准库之:IO库
    stm32cubemx hal学习记录:FreeRTOS任务管理
    Valens VA6000 USB2.0延长器
    mysql使用--带搜索条件的查询
    世界互联网大会领先科技奖发布 百度知识增强大语言模型关键技术获奖
    用好单例设计模式,代码性能提升300%
  • 原文地址:https://www.cnblogs.com/liangsu/p/16100615.html