
JVM
文章平均质量分 83
烤鸭的世界我们不懂
烤鸭的世界我们不懂。
展开
-
《深入理解Java虚拟机》-读书笔记(第一、第二部分)
大家好,我是烤鸭:关于《深入理解Java虚拟机》,记录一下读书笔记。深入理解Java虚拟机原创 2022-05-08 15:23:30 · 435 阅读 · 0 评论 -
记一次线上服务假死排查过程
大家好,我是烤鸭: 最近线上问题有点多啊,分享一个服务假死的排查过程。问题描述9点10分,收到进程无响应报警(一共6台机器,有1台出现),后来又有1台出现。排查思路首先确认是否误报或者网络抖动,登陆服务器查看进程存在。查看cat监控,发现gc次数和gc耗时都升高,基本确认是oom导致的。当时由于优先处理问题,服务重启后,没办法找到oom源头了(进程命令包含oom记录,但是没生成oom日志)。-XX:+HeapDumpOnOutOfM原创 2022-01-12 08:15:00 · 771 阅读 · 0 评论 -
记一次线上cpu飙升100%的排查过程
大家好,我是烤鸭: 最近没怎么写技术文章,还是得回归下初心,正好前几天出现个线上问题,记录下排查过程。问题描述某个时间点,接收到接口响应慢报警。过一会收到服务器cpu可用率低(<10%)报警。去cat上查看发现younggc次数频繁。排查思路业务代码近期没改动和发版,出现问题大概率是中间件或者环境问题(服务器硬件或网络)。尝试回滚代码和扩容机器。输出堆栈日志和gc快照,调整jvm参数。排查结果中间件和网络:使用到的中间件包原创 2022-01-10 08:15:00 · 714 阅读 · 0 评论 -
从字节码看 finally关键字、异常表
大家好,我是烤鸭: 今天说下finally 这个关键字。1.认识finallyfinally 总是跟 try、catch一起出现,finally是执行方法结束一定要执行的代码,比如流关闭等等。finally是如何实现在异常捕捉之后保证执行 finally 代码块里的内容。其实不管是普通的代码,还是 try、catch ,JVM都是根据字节码文件中的指令来执行,也就是 finally的时候,字节码指令覆盖了这一种情况。而异常之后的操作指令是有专门的异常表来存储,在字节码...原创 2020-10-14 09:12:19 · 343 阅读 · 3 评论 -
Alibaba 开源工具 Arthas 使用
大家好,我是烤鸭: 很长时间没更新了,最近太忙了,只能抽空水点文章了,今天给大家介绍的是阿里的开源工具Arthas 的使用。1. 开源地址 Arthas 是Alibaba开源的Java诊断工具 https://github.com/alibaba/arthas 中文说明: https://github.com/alibaba/art...原创 2020-01-20 13:10:23 · 384 阅读 · 0 评论 -
记一次 OOM 的原因和处理 出现大量 close_wait,项目无法访问 activeMq和 poi 出现的 OOM
大家好,我是烤鸭: 记一次项目无法访问的事件和处理。由于某个模块每隔几天就会出现无法访问,目前的最简单粗暴的方法就是重启。1. 现象 项目内日志打印正常,经过dubbo的rpc服务和接口调用正常。http接口无法访问。提示nginx 502。 2. 原因猜想 通常提示502 基本是项目本身原因。但是日志一直打印正常,很奇怪。 ...原创 2019-10-29 15:59:54 · 4448 阅读 · 0 评论 -
由excel导出引起的cpu 100% 和gc 的问题
大家好,我是烤鸭: 记一次 由excel导出 导致的cpu飙升200%,jvm 内存不足。1. 场景复现 前端页面导出Excel,之前导出4,5W条数据都没什么问题的。 今天业务突然反馈说导出不了了,我试着导出了2w数据,发现页面卡住了, 没有响应了,查日志,报错如下。java.lang.IllegalStateException: Cannot c...原创 2018-12-29 14:20:11 · 5460 阅读 · 2 评论 -
Java 面试题(3)—— JVM
JVM的内存结构。JVM主要结构:堆内存、栈、方法区,程序计数器,永久代)(jdk 8采用元空间替代)。堆内存又分成年轻代和年老代。年轻代由三部分组成,Eden、From Survivor 和 To Survivor,这三者默认分配的比例是8:1:1。方法区主要存储类信息、常量、静态变量等数据。栈又分为java虚拟机栈和本地方法栈,每创建一个线程对应一个java栈,每调用一个方法就...原创 2019-08-27 12:58:06 · 557 阅读 · 0 评论