Day489.尚硅谷之高频重点面试题③ -面经
Posted 阿昌喜欢吃黄桃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day489.尚硅谷之高频重点面试题③ -面经相关的知识,希望对你有一定的参考价值。
尚硅谷之高频重点面试题③
一、快速回顾
1、JVM内存结构
- 类的加载器是什么?
- 双亲委派机制是什么?
- Java沙箱安全机制是什么?
- 堆的由什么组成?
- 新生代
- 幸存者1
- 幸存者2
- 伊甸区
- 养老区
- 永久代(7)、元空间(8)
- 新生代
2、GC作用域
- 哪些部位是JVM线程私有的?
- 程序计数器
- Java栈
- 本地方法栈
- JVM线程共有?
- 堆
- 方法区
3、常见垃圾回收算法
-
引用计数算法
有对象引用+1,没对象引用-1。存在循环引用问题
-
标记清除
- 先标记出要回收的对象,后清除
- 存在内存碎片
- 相比复制算法,节约了内存空间
-
标记压缩
- 先标记出要回收的对象,后清除,再压缩整理内存碎片
- 没有内存碎片
- 有移动对象的成本
- 相比另外的算法,更耗时
-
复制算法
- 堆空间年轻代的幸存者1/2区在用,谁空谁是to
- 没有内存碎片
- 需要2倍的内存空间
二、JVM垃圾回收的时候如何确定垃圾?是否知道什么是GCRoots?
-
是什么垃圾?
内存中已经不再使用到的空间就是垃圾
-
如何判断一个对象是否可以被回收?判断方法有哪些?
-
引用计数法
-
可达性分析法
被GCRoots直接或间接引用可达就不会被回收
-
-
哪些对象可以作为GCRoots?
两个栈,两个方法区
三、如何盘点查看JVM系统默认值?
1、参数类型
-
标配参数
- -version
- -help
- java -showversion
-
X参数(了解)
- -Xint 解释执行
- -Xcomp 第一次使用就编译成本地代码
- -Xmixed 混合模式
-
XX参数
-
Boolean类型
-XX:+ -XX:- # +表示开启,-表示关闭 # 举例 -XX:+PrintGCDetails
-
KV键值对类型
# 举例 -XX:MetaspaceSize=1024m
-
2、怎么查看一个正在运行的java进程的jvm参数?
jinfo -flag <具体参数名> <java进程号>
jps
jinfo -flags <java进程号>
3、如何查看参数盘点家底
-XX:+PrintFlagsInitial #初始值
-XX:+PrintFlagsFinal #最终值
四、平时常用的JVM常用基本配置参数有哪些?
常用参数典型案例
-Xms128m -Xmx4096m -Xss1024kb -XX:MetaspaceSize=512m -XX:PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseSerialGC
-
-Xmx
- 最大堆空间内存大小,默认物理内存的1/4
- 等价:-XX:InitialHeapSize
-
-Xms
- 初始堆空间内存大小,默认物理内存的1/64
- 等价:-XX:MaxHeapSize
-
-Xss
- 设置单线程栈的大小,默认512k-1024k
- 等价:-XX:ThreadStackSize
-
-Xmn
- 设置堆空间新生代内存大小(一般不动)
-
-XX:MetaspaceSize
- 设置元空间大小
-
-XX:PrintGCDetails
-
GC收集日志
-
-
-XX:SurvivorRatio(一般不动)
- 设置伊甸园区比例占用,默认为8,8:1:1
-
-XX:NewRatio
- 设置新生代与老年代比例占比,默认为2,1:2
-
-XX:MaxTenuringThreshold
- 设置垃圾回收年龄阈值,默认为15,要求设置范围在:0-15
五、强/软/弱/虚引用是什么?你能说说吗?
-
强引用(默认支持)
- 就算出现OOM也不会对该对象进行GC垃圾回收,
死都不收
- 就算出现OOM也不会对该对象进行GC垃圾回收,
-
软引用
不够就收
-
弱引用
GC就收
-
虚引用
对象回收的监控
虚引用对象被回收之前,会被放置在对应关联的引用队列中,可以从引用队列取出,做一些想做的操作(死之前)
小总结:
强引用
:在垃圾回收之外,永不回收
软引用
:内存不足就回收
弱引用
:GC就回收
虚引用
:GC前/GC后都无法获取到对象,形如虚设,回收前会被放入引用队列
六、请你谈谈对OOM的认识
以上是关于Day489.尚硅谷之高频重点面试题③ -面经的主要内容,如果未能解决你的问题,请参考以下文章
Java核心面试宝典Day14“线程池”高频面试题总结!✊✊✊