JVM 相关的常见面试问题汇总
面试和笔试的要点其实差不多,基础知识和实战经验都是最重要的关注点(当然,面试时的态度和眼缘也很重要)。
实际面试时,因为时间有限,不可能所有问题都问一遍,一般是根据简历上涉及的内容,抽一部分话题来聊一聊。看看面试者的经验、态度,以及面对一层层深入问题时的处理思路。借此了解面试者的技术水平,对深度、广度,以及思考和解决问题的能力。
常见的面试套路是什么呢?
XXX 是什么?
实现原理是什么?
为什么这样实现?...
面试和笔试的要点其实差不多,基础知识和实战经验都是最重要的关注点(当然,面试时的态度和眼缘也很重要)。
实际面试时,因为时间有限,不可能所有问题都问一遍,一般是根据简历上涉及的内容,抽一部分话题来聊一聊。看看面试者的经验、态度,以及面对一层层深入问题时的处理思路。借此了解面试者的技术水平,对深度、广度,以及思考和解决问题的能力。
常见的面试套路是什么呢?
XXX 是什么?
实现原理是什么?
为什么这样实现?...
通过前面的学习,我们发现 GC 日志量很大,人工分析太消耗精力了。由于各种 GC 算法的复杂性,它们的日志格式互相之间不太兼容。
有没有什么工具来减少我们的重复劳动呢? 这种轮子肯定是有现成的。比如 GCEasy、GCViwer 等等。
这一节我们就开始介绍一些能让我们事半功倍的工具。
GCEasy 工具由 Tier1app 公司 开发和支持,这...
Continue reading >>G1 的全称是 Garbage-First,意为垃圾优先,哪一块的垃圾最多就优先清理它。
G1 相关的调优参数,可以参考:
https://www.oracle.com/technical-resources/articles/java/g1gc.html
G1 使用示例:
# 请注意命令行启动时没有换行 java -XX:+UseG1GC -Xms512m -Xmx512m...Continue reading >>
CMS 也可称为“并发标记清除垃圾收集器”。其设计目标是避免在老年代 GC 时出现长时间的卡顿。默认情况下,CMS 使用的并发线程数等于 CPU 内核数的 1/4。
通过以下选项来指定 CMS 垃圾收集器:
-XX:+UseConcMarkSweepGC
如果 CPU 资源受限,CMS 的吞吐量会比并行 GC 差一些。示例:
# 请注意命令行启动时没有换行,此处是方便大...Continue reading >>
上一节 JVM GC 日志解读与分析(基础配置)讲述了 GC 日志相关的基础信息和配置。需要提醒的是,这些参数是基于 JDK 8 配置的。
在 JDK 9 之后的版本中,启动参数有一些变化,继续使用原来的参数配置可能会在启动时报错。不过也不用担心,如果碰到,一般都可以从错误提示中找到对应的处置措施和解决方案。
例如 JDK 11 版本中打印 info 级别 GC 日志的启动脚本:
# JDK&...Continue reading >>
通过具体示例来演示如何输出 GC 日志,并对输出的日志信息进行解读分析,从中提取有用的信息。
为了演示需要,我们先来编写一段简单的 Java 代码:
package demo.jvm0204; import java.util.Random; import java.util.concurrent.TimeUnit; import jav...Continue reading >>