面试问题

OOM排查

工具: jstack、jmap

ps 命令找到对应进程的 pid(如果你有好几个目标进程,可以先用 top 看一下哪个占用比较高)

pid 转换为 16 进制:printf '%x\n' pid 得到 nid

在 jstack 中找到相应的堆栈信息jstack pid |grep 'nid' -C5 –color

查看某进程的线程总数: pstree -p pid |wc -l

导出堆转储文件,用于分析堆内存使用情况 jmap -dump:format=b,file=./logs/heapdump.hprof pid

系统挂了就没法分析堆信息了,可以加在启动命令里:

-XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./logs/

IDEA直接打开 .hprof文件进入分析视图

堆内存满会发生fullGC,GC后依然满,将OutOfMemoryError(OOM)

打印堆使用信息:jhsdb jmap --heap --pid 10465

VisualVM 或者同名IDEA插件用来分析堆转储文件

海量数据转移:ES、mysql

高并发接口设计

全部评论
oom是最难排查的,你这只是看上层的,看看内核的那就难度升级了
点赞 回复 分享
发布于 09-26 11:55 陕西

相关推荐

09-21 00:23
门头沟学院 C++
拼夕夕在一众加班大厂中都属于累的,为什么还有那么多人愿意去呢?我认为主要有五大原因:1pdd2016年成立,福报厂1999年成立,京东2004年成立,一家晚十几年成立的公司,在当今最卷的电商行业中依然保有前三的市场份额,我认为创始团队是有点东西的。2真正实现了按劳分配pdd真正实现了按劳分配,如果你干的多,大概率你能拿的更多,工作两三年,超过一个中厂部门负责人的待遇是完全有可能的。而在某些其它大厂,你可能干了核心项目,肉被你的组长拿去做成ppt汇报抢了功劳,你只喝到了汤,这在pdd比较少见。3组织文化扁平许多竞对公司p7上面是p8,p8上面还是p8,一个普通员工和ceo之间的汇报线隔了十多级,层级越多,你做的事越难被看见,而pdd的汇报线是很扁平的,不做事就想拿果实比较难。4职级淡化职级只不过是管理工具而已,许多大厂经历那么多次职级改革,职级体系依然存在,无论鹅厂、福报厂还是宇宙厂都是如此,职级是你跳槽时的重要砝码,而pdd至今淡化职级,推崇多劳多得的文化。5人效比高,闲人少人效比是衡量平均每个员工能带来多少营收,用总营收除以总员工数就能得到,腾讯这个数字是550万/人,就是说平均每个员工能带来550万的营收,阿里是300万/人,而pdd是1600万/人,你很难想象一个超3000亿营收的大厂只有两万多员工,人效比越高,证明公司的护城河越深,看看对岸的openai就知道了。说了这么多,并不是一个给加班文化盛行的大厂的洗白贴,江浙有许多工厂工人也是单休还赚不到多少钱。26届多多内推码内推码 Aw0TNmXngV内推链接 https://careers.pddglobalhr.com/campus/grad?t=Aw0TNmXngV
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
09-25 15:43
门头沟学院 Java
点赞 评论 收藏
分享
公司 HR 打电话约面试时,特意强调:“我们招的是 Java 开发,最低本科,你大专学历…… 要不还是算了?” 我正想挂电话,她又补了句:“不过老板说‘万一呢’,你过来试试吧。”面试室里,技术主管翻简历的手停在 “学历:大专” 那行,指节捏得发白。他把简历往桌上一墩,笔都弹起来了:“会写代码吗?别告诉我你就看过两天教程。”“会一点 Java。” 我指尖无意识敲着桌面,“比如 public static void main,能写个入口方法。”主管手里的笔 “啪” 掉在地上。他弯腰捡笔时腰杆都在抖,抬头盯着我半天,突然扯开嗓子喊:“老板!快!快叫技术部所有人过来!有个会写 main 方法的!能启动程序的那种!”隔壁办公区的键盘声跟被掐断似的。老板踩着拖鞋冲进来,眼镜滑到鼻尖上,扒着门框喊:“真的假的?能写 main 方法?我们服务器上那堆代码,三个月没人能跑起来!”“不止,” 我补充道,“还会用 System.out.println ("xxx"),带换行的那种。”老板 “嗷” 一嗓子蹦起来,差点撞翻饮水机:“留!现在就签合同!月薪 25k!住房补贴单独算!电脑给你配最新款 Mac!”旁边刚端着茶杯进来的技术组长手一抖,茶水洒在衬衫上都没察觉:“能…… 能换行?我们之前打印日志都是手动敲 \n,敲错一次就得改半天!”我没说的是,我还会定义 int a=10; int b=20; 然后算 a+b—— 这底牌,得等转正再亮。刚坐到工位,运营部的大姐捧着笔记本凑过来,声音跟蚊子似的:“大佬,您说的 main 方法…… 是不是就是程序开头那行‘public static void……’?我之前总把 static 写成 staitc,改到崩溃。”我点头的瞬间,余光瞥见好几个脑袋凑过来,有人掏出荧光笔在本子上划:“main 方法 = public static void main (String [] args),记死!”下午突然炸锅 —— 甲方发了个紧急需求:“今晚必须跑通一个计算 1 到 100 总和的程序,我们自己写的跑一次崩一次。” 整个技术部的人围着电脑挠头,屏幕上的代码东倒西歪,有个哥们居然在用 for 循环写 i=i+1,还忘了初始化 i。“我试试?” 我拉过椅子。办公室突然静得能听见硬盘转。我打开 Eclipse,先敲 public class SumTest,回车时 IDE 自动补全了大括号,再写 main 方法,然后定义 int sum=0; 接着 for (int i=1;i<=100;i++){sum+=i;},最后 System.out.println ("总和:"+sum); 点击运行 —— 控制台跳出 “总和:5050”,连字体都透着工整。那个写 i=i+1 的哥们 “嘶” 地倒吸凉气,手机搜 “Java for 循环 sum+=i 是什么神仙操作”。产品经理抱着胳膊冷笑:“不就几行代码?我上我也行。”我没说话,随手按了 Ctrl+D,刚才写的 for 循环自动复制了一行,改了个变量名就成了计算偶数和的逻辑。产品经理的脸噌地红透了,转身假装接电话,其实在偷偷搜 “Eclipse Ctrl+D 快捷键”。下班前,一直用 Excel 算数据总和的财务大姐攥着计算器过来,声音带着颤:“小老师,您这写个程序算总和的本事,在阿里腾讯不得拿 50k?”我笑了笑,没告诉她 —— 我其实还会用 if (i%2==0) 筛选偶数,甚至能写个带 return 的方法。这底牌,留着给明年涨薪用正好。
投递阿里巴巴集团等公司10个岗位
点赞 评论 收藏
分享
评论
2
11
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务