秋招面试题- - -JVM篇(二十二)

2022-12-06 14:50:38 浏览数 (1)

     前言:七月末八月初的时候,秋招正式打响,公司会放出大量的全职和实习岗位。为了帮助秋招的小伙伴们,学长这里整理了一系列的秋招面试题给大家,所以小伙伴们不用太过焦虑,相信你们一定能超常发挥,收到心仪公司的Offer~~ 内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux等技术栈

      再次渡入繁世,人潮汹涌,眼里茫然,信仰永恒,皆为华夏   

目录

进阶篇

31、如何选择垃圾收集器?

32、 什么是类加载器?

33、什么是 tomcat 类加载机制?

本期分享到此为止,关注博主不迷路,叶秋学长带你上高速~~


进阶篇

31、如何选择垃圾收集器?

1. 如果你的堆大小不是很大(比如 100MB),选择串行收集器一般是效率最高的。

参数:-XX: UseSerialGC。

2. 如果你的应用运行在单核的机器上,或者你的虚拟机核数只有单核,选择串行收集器依然是合

适的,这时候启用一些并行收集器没有任何收益。

参数:-XX: UseSerialGC。

3. 如果你的应用是“吞吐量”优先的,并且对较长时间的停顿没有什么特别的要求。选择并行收集

器是比较好的。

参数:-XX: UseParallelGC。

4. 如果你的应用对响应时间要求较高,想要较少的停顿。甚至 1 秒的停顿都会引起大量的请求失

败,那么选择G1、ZGC、CMS都是合理的。虽然这些收集器的 GC 停顿通常都比较短,但它

需要一些额外的资源去处理这些工作,通常吞吐量会低一些。

参数:

-XX: UseConcMarkSweepGC、

-XX: UseG1GC、

-XX: UseZGC 等。

从上面这些出发点来看,我们平常的 Web 服务器,都是对响应性要求非常高的。选择性其实就集

中在 CMS、G1、ZGC上。而对于某些定时任务,使用并行收集器,是一个比较好的选择。

32、 什么是类加载器?

类加载器是一个用来加载类文件的类。Java 源代码通过 javac 编译器编译成类 文件。然后 JVM 来执行类文件中的字节码来执行程序。类加载器负责加载文件 系统、网络或其他来源的类文件。

33、什么是 tomcat 类加载机制?

在 tomcat 中类的加载稍有不同,如下图:

当 tomcat启动时,会创建几种类加载器: Bootstrap 引导类加载器 加载 JVM启动所需的类,以及标准扩展类(位于jre/lib/ext 下) System 系统类加载器 加载 tomcat 启动的类,比如

bootstrap.jar,通常在 catalina.bat 或者 catalina.sh中指定。位于CATALINA_HOME/bin下。

Common 通用类加载器

本期分享到此为止,关注博主不迷路,叶秋学长带你上高速~~

0 人点赞