没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
1.说一下方法进栈出栈的步骤
2.说一下堆的内存分代
3.说一运行时数据区
4.Java 实例存放在哪个数据区?/new 出来的都放 heap 吗?
5.对 Java 内存模型 JMM 的理解?
6.说一说 OOM 问题的排查思路。
使用 top 命令查看内存异常或者说内存占用高的进程
结合 jstack(或者直接使用一下第三方工具如 arths) 查看线程情况,排查死锁,IO 阻
塞等问题
继续分析堆的使用情况 jmap -heap +pid 查看一下存活对象,占用内存多的对象 jmap -
histolive +pid 或者用一些在线的工具如 heaphero.io 来分析堆日志文件 heap.prof
7.说一 GC 调优的思路
a.首先是配置 GC 日志的输出,借助 一些工具来分析 如 gcviwer 在线的 easyGC.com
b.查看一下总的参数情况:Throughput[吞吐量] Avg Pause[平均暂停时间] GC Count [发生的
GC 次数]
c.动态分配堆内存的大小,以及分配情况,来查看 GC 情况。
f.各种垃圾收集器的回收方法不一样,所以具体的调优思路还得官网给出的不同收集器的
分析思路,并结合自己的业务来分析
如在 G1 收集器使用时,可以设置停顿时间。
G1 还可以尝试设置停顿时间值 predictable 来分析吞吐量变化 Throughput 和 Avg Pause[平
均暂停时间]的变化
8.jdk8 默认的垃圾收集机
Java 8 默认使用 ParallelGC 收集器,也就是在新生代使用 Parallel Scavenge 收集器,老年代
使用 ParallelOld 收集器
用 java -XX:+PrintCommandLineFlags -version 看使用的垃圾收集器
9.应用启用时发生了 FullGC,而查看老年代的空间还是充足的。为什么?请分析
一下原因
此题考查的是 FullGc 的触发时机,我们知道 Full GC 一般是 = MinorGc + OldGC,但这个"一
般" 指的是运行时
此处特别强调了“应用启动时”,程序开发执行的时候会加载类信息,而类型信息是存放在
元空间的,所以
元空间 MetaspaceSize 设置过小导致,默认是 20M 左右。可能类信息太多导致元空间不够,
进而导致扩容,进而导致堆内存变化,进而导致了 fullGC
所以应该要强调一点:程序启动时 Full GC 是 = MinorGc + OldGC + MetaspaceGC
10.说一下 GC 算法,回收原理
引用计数法:每次对象赋值时维护引用计数器,引用计数器=0 时则回收;由于循环引
用问题的存在,目前很少用改回收算法。
复制:如 Minor GC 的过程用的就是复制算法 复制-->清空-->互换 from 区,to 区
标记清除:mark-sweep ,先统一标记出需要回收的对象,再统一回收这些对象。解决了
复制算法大面积内存拷贝导致的回收性能差的问题,但是会产生内存不连续的状况即
—内存碎片。导致空间浪费。
标记整理:在标记-清除之后,再次扫描内存空间,将不连的对象挪到一起,形成连续
剩余9页未读,继续阅读
资源评论
撸智深
- 粉丝: 22
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 汇编语言安装文件:nasm-2.16.03
- Java 插件框架 (PF4J).zip
- image-svnadmin-2.5.3.tgz 正在使用ing,方便简单使用,运维好工具
- 地平线ros2文件.zip
- Java 多线程课程的代码及少量注释.zip
- 数据库课程设计-基于的个性化购物平台的建表语句.sql
- 数据库课程设计-基于的图书智能一体化管理系统的建表语句.sql
- Java 代码覆盖率库.zip
- Java 代码和算法的存储库 也为该存储库加注星标 .zip
- 免安装Windows10/Windows11系统截图工具,无需安装第三方截图工具 双击直接使用截图即可 是一款免费可靠的截图小工具哦~
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功