写点什么

Java 培训 JVM 高频面试题

作者:@零度
  • 2022 年 3 月 17 日
  • 本文字数:1161 字

    阅读完需:约 4 分钟

VM 总体分为 JVM 规范和 JVM 实现

JVM 和 JDK 的区别

JRE = JVM+Java 标准库

JDK = JRE+开发调试诊断工具

JVM 具有跨平台性

JVM 跨语言性:JVM 只识别字节码

JVM 的运行时数据区有哪些

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



什么是堆内存?堆内存包含哪些部分

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

堆空间为了方便 GC 模块进行对象分配和回收,可以把堆空间进行划分:新生代、老年代



刚创出来的对象会放在新生代,经过多次垃圾回收会放在老年代。

新创建的对象会放在 Eden 区,如果 Eden 区的空间满了,会促发垃圾回收,把对象复制到 S0,下次满了,会复制到 S1,S0 复制到 S1。一般情况 S 区放不下会放在老年代,一般情况下要经过 15 次垃圾回收才会放在老年代

什么是内存泄露,和内存溢出有什么关系

内存泄露:本来无用的对象却继续占用内存,没有在恰当的时机释放占用的内存java培训

不使用的内存,却没有被释放,这个叫做内存泄露

与内存溢出的关系:

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

Java 有四种类型的垃圾回收器

1.串行垃圾回收器

2.并行垃圾回收器

3.CMS 垃圾回收器

4.G1 垃圾回收器

自己百度更深刻

Java8 默认使用的垃圾回收器是什么

并行回收器,它是多线程的

指使用多个 GC worker 线程并行地执行垃圾收集,能充分利用 CPU 的能力,缩短垃圾收集的暂停时间

除了单线程的 GC,PS、CMS、G1 都是多个线程来并行执行 GC 工作

G1 是垃圾优先,哪块垃圾最多就优先清理它

什么是 STW?什么是安全点?什么是安全区域?

所有应用线程都需要暂停后才能执行 GC,这时候就叫 STW(GC 暂停)。

类加载和类加载器

类加载是一个类从被加载到 Java 虚拟机内存开始到卸载出内存。

生命周期经历 --加载、验证、准备、解析、初始化、使用和卸载 七个阶段,其中验证、准备、解析统称为连接。

加载阶段虚拟机需要完成三件事情:

1.通过一个类的全限定名来获取定义此类的二进制字节流

2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构

3.在内存中生成一个代表这个类的 java.lang.Class 对象,作为这个方法区的所有数据的访问入口

会把第一步这个动作放在 Java 虚拟机外部去实现,便于程序自己决定如何获取所需的类,这个动作被称为“类加载器”

什么是双亲委派机制?有什么作用?

双亲委派机制是属于类加载的一个机制,加载之前,会委派给它的父加载器进行加载,如果父加载器不行,就自己加载。可以避免类的重复加载,保证 Java 核心的安全稳定

使用过哪些 JVM 相关的命令工具

jps 列出当前机器正在运行的虚拟机进程,jps 从操作系统的临时目录去找

-q:仅显示进程

-m:输出住函数传入的参数

-l:输出应用程序住类完整的 package 名称或 jar 完整名称

-v:列出 jvm 参数

jstat 用于监视虚拟机各种运行状态信息的命令行工具

jstat -gc 13616 查看 jvm 进程 13616 的情况

文章来源于编译

用户头像

@零度

关注

关注尚硅谷,轻松学IT 2021.11.23 加入

还未添加个人简介

评论

发布
暂无评论
Java培训JVM 高频面试题_JVM_@零度_InfoQ写作平台