关于java:Java架构师面试网整理JVM面试专题共8题含答案

9次阅读

共计 1373 个字符,预计需要花费 4 分钟才能阅读完成。

Java 架构师面试网总结了 JVM 一些经典面试题,分享出大抵的解题思路,心愿对大家有帮忙,有哪里你感觉不正确的话,欢送指出,后续有空会更新。
所有面试题均由小编从各个渠道收集整理,整顿不易,点个关注吧,嘻嘻
预计分为如下专题:

  • 互联网工具篇
  • 框架源码篇
  • 并发编程篇
  • 性能调优篇
  • 分布式框架篇
  • 微服务系列篇
  • 数据结构与算法篇
  • Java 根底面试回顾篇

1、什么状况下会产生栈内存溢出?
答:如果线程申请调配的栈容量超过 java 虚拟机栈容许的最大容量的时候,java 虚拟机将抛出一个 StackOverFlowError 异样

2、你晓得哪几种垃圾收集器,各自的优缺点,重点讲下 cms 和 G1,包含原理,流程,优缺点。
答:Serial 收集器、Parallel(并行)收集器、CMS 收集器(基于“标记 - 革除”算法实现的)、G1 收集器(基于“标记 - 整顿”算法实现的)

3、双亲委派模型
答:双亲委派模型工作过程是:如果一个类加载器收到类加载的申请,它首先不会本人去尝试加载这个类,而是把这个申请委派给父类加载器实现。
每个类加载器都是如此,只有当父加载器在本人的搜寻范畴内找不到指定的类时(即 ClassNotFoundException),子加载器才会尝试本人去加载。
避免黑客歹意篡改某些 java 类,进行注入恶意代码。

4、如何突破双亲委派机制
答:1、本人写一个类加载器 2、重写 loadclass 办法 3、重写 findclass 办法

5、怎么打出线程栈信息?
答:一、通过命令 pidof java 找到曾经启动的 java 过程 ID。二、应用命令 kull-3 <java 进行的 pid> 打印出 java 程序的线程堆栈信息

6、简略讲讲 tomcat 构造,以及其类加载器流程,线程模型等
答:Tomcat 启动时,会创立以下四个类加载器
1)Bootstrap 疏导类加载器:(次要加载 JVM 启动所须要的类)。
2)System 零碎类加载器:(次要加载 Tomcat 启动时的类)
3)Common 通用类加载器(次要加载 tomcat 应用以及利用通用的一些类)
4)webapp 利用类加载器(次要加载每个利用的 class 文件)

7、tomcat 如何调优,波及哪些参数
• -server:启用 jdk 的 server 版本。
• -Xms:虚拟机初始化时的最小堆内存。
• -Xmx:虚拟机可应用的最大堆内存。#-Xms 与 -Xmx 设成一样的值,防止 JVM 因为频繁的 GC 导致性能大起大落
• -XX:PermSize:设置非堆内存初始值, 默认是物理内存的 1 /64。
• -XX:MaxNewSize:新生代占整个堆内存的最大值。
• -XX:MaxPermSize:Perm(俗称办法区)占整个堆内存的最大值,也称内存最大永恒保留区域。

8、调用 system.gc()马上就执行 gc 吗?
并不会马上执行 gc,甚至不肯定会执行 gc。这句话只是倡议 jvm 进行 gc,当咱们代码这样写的话会把 gc 申请记录下来
等到变量 runFinalization=true 的时候才会去执行 gc。如果真须要马上 gc 代码应该是
System.gc();
runtime.runFinalizationSync();
System.gc();
不过虚拟机有本人的 gc 策略,不倡议手动 gc

嗨,你好呀,将来的架构师,本文由 Java 架构师面试网 www.javajiagoushi.com 收集整理并进行编辑公布,谢谢大家的反对~

正文完
 0