关于 jvm 面试

2020-05-03 22:58:26 +08:00
 zxc1234

面了某大厂,一面上来就是遇到过 jvm crash 吗

我只好说没遇到过

想问下大家这种 jvm crash 遇到过吗 经常吗

迷茫~求指教~

3922 次点击
所在节点    程序员
24 条回复
hhhsuan
2020-05-03 23:03:05 +08:00
内存不够就会 crash
mazai
2020-05-03 23:36:31 +08:00
就是想问你一些调优的经验而已,你没遇到过不就没说了,编也编一个 OOM 的情况了吧,老哥,多半凉了
Mohanson
2020-05-03 23:40:49 +08:00
就个人经验, divide by zero, 内存越界, 内存未对齐, 超过最大栈深度, 结构化指令嵌套错误都能 crash 掉 vm. 虽然我没用过 JVM, 但按照 Webassembly 虚拟机来说就是这样...
zxc1234
2020-05-04 00:36:07 +08:00
@mazai oom 是 crash ??
chihiro2014
2020-05-04 01:07:44 +08:00
@zxc1234 crash (可以理解为崩溃),oom 自然算。不过问 jvm 问题没意义,不如把代码写好点
vk42
2020-05-04 06:17:08 +08:00
@zxc1234 可能指爆 heap 吧,OOM 一般是 OS 行为,和 JVM 本身关系不大
lewis89
2020-05-04 10:08:02 +08:00
@vk42 #6 JVM 可以设置堆大小,怎么会没有关系,OOM 不是 bark 调用申请不到物理内存了,而是 JVM 自己抛异常了
lewis89
2020-05-04 10:19:17 +08:00
@mazai #2 说实话 OOM 遇到的情况也很少,业务代码里面的对象 大多都是栈上的引用指向它们,业务逻辑流程的栈空间一弹出,这些对象基本上就死了,基本上不存在业务代码会 OOM 的情况,OOM 大多发生在框架代码里,它们会使用一些 GCRoots 节点 类的静态变量 会引用这些对象,然后没有释放 才会发生 OOM 的情况
vk42
2020-05-04 10:33:12 +08:00
@lewis89 好吧,我们这边一般把 jvm 的 OOM exception 叫爆 heap,说 OOM 的话一般是指 OS 的 OOM handler 。怪我没说清……
cheng6563
2020-05-04 14:06:12 +08:00
用 openj9 时遇到过
pursuer
2020-05-05 00:37:51 +08:00
@cheng6563 #10 今天刚好碰到一个 libgdx 上 jni 访问越界造成 jvm 崩溃的问题,把源码全部扒出来查了半天最后发现是 openj9 的问题,换上了 zulujdk11 就好了。。。
tension2012
2020-05-05 09:59:23 +08:00
jvm crash 的时候,会生成一个 hs_err_pidxxx.log, 里面的内容就是会记录 jvm crash 的时候,寄存器,堆,加载的动态库等的情况,要让 jvm crash,其实很简单, 就是执行 kill -11 {pid}, 它就会 crash 掉
fewok
2020-05-05 12:48:37 +08:00
所以,问这个的意义是什么??考察你之前的公司是否经常 crash ?还是你是否喜欢探索异常处理?
ligiggy
2020-05-05 15:17:20 +08:00
@fewok 如果你现在面试的公司,有对这方面有要求,他就不会管你之前有没有或者说需不需要从事相关事务。也许这对面试者来说,很不公平,但是面试官并不是出于考察你在前公司的表现为前提的。
mazai
2020-05-05 15:39:10 +08:00
@ligiggy 老哥正解,其实就是考察你有没有相关的经验,或者对这方面研究的深不深。
yinzhili
2020-05-05 17:17:09 +08:00
就怕是面试造导弹,工作拧螺丝
zxc1234
2020-05-05 20:06:54 +08:00
问题是,现在不是很多 crash 都 try catch 住了吗,还问有没有遇到。。。
zxc1234
2020-05-05 20:12:35 +08:00
@ligiggy
@mazai

楼上
dousha99
2020-05-05 20:49:28 +08:00
@zxc1234 #17 crash 一般是无法被 catch 的,它和 exception 不同。crash 是发生严重的、不可恢复的错误才会出现的。
zxc1234
2020-05-05 20:53:05 +08:00
@dousha99 三楼所说的 divide by zero 不就是可以 catch ??还是说 divide by zero 不是 crash ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/668351

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX