写 Java 的和写 Cpp 的理念和观点争论,各位看看我的理解哪里有问题

262 天前
 sleepybear1113

我是写 Java 的,基本就是写业务 crud 的;人家是写 C++ 的,游戏后端,室友。在讨论今天的屎山代码的时候,聊到了这个话题。

话题主要是,一个程序异常退出了,怎么定位问题。他的理解是,不管什么语言,总会有程序/虚拟机捕捉不到的情况,找不到堆栈、日志,怎么去排查问题。我的理解是,我目前就写 Java ,也就谈论 Java ,jvm 接管,都是在写业务,很少遇到程序炸了的情况,即使炸了 jvm 也会接手给出 dump 或者打印堆栈,或者框架在崩溃之前有相关的日志,而且一般 Java 的应该都是 oom 炸的比较多,别的暂时没怎么接触。

后面是四张微信截图。在我看来,应该是两个人对于语言的理解不一样,所以导致开发的过程中对于异常的处理也不一样。所以麻烦大家看看,我的想法是不是也有不对的地方,或者双方的理解都有什么问题。

叠甲,双方都是友好讨论,关系不错,就瞎扯扯到这个的。不要说谁杠就是谁对,仅探讨内容和理解方面的问题,指出一下比如我的哪块理解或者知识储备有问题。

下面是图片,可能有点长,一共四张(另外,哪些图床可以贴图,带缩放的,不然图片尺寸有点大,太刷屏了)

2146 次点击
所在节点    编程
29 条回复
barrysj
262 天前
你们的这个争论本身,还没到讨论具体“没堆栈日志的情况下怎么排查”,是在争论有没有“没堆栈日志的这个情况”。
c 发生 core 的场景肯定比 jvm 挂掉的场景多得多,所以写 c 的去考虑这个问题是有意义的,java 不去考虑也行。
不过对面这个哥们其实是有点 der 的。。。。倒数第二张图你说“发现虚拟机的好处了”,这哥们以为你说的 cvm 。。
还提到 strace ,程序挂了的时候 strace 又用不了
sleepybear1113
262 天前
@Mithril #9 看起来我们两个应该不在一条线上

@GeruzoniAnsasu #11 工作已经很累了,怎么多写呢。不是那么容易的。

@Ayanokouji #12 容器炸了相当于系统炸了,这个东西从来没考虑过,要么加硬件要么限制内部。

@chingyat #13 对方有用过,对 Java 来说,这个应该基本接触不到的,你可能不写 Java 吧。

@Erroad 不是刻意回避的情况,现在的了解应该是不在一条频道了。
woodfizky
262 天前
感觉是语言特性/生态特性/异常处理风格不同 导致的一般情况下职责划分和系统层面的不同。

写 Java 的一般不用处理 JVM 或者框架跑不起来的情况。

写 C/CPP 的,程序炸了还要看是在哪个层面炸了,调查深度可以很深,一层一层向底层调查的感觉。

所以你俩确实没聊到一起去。
ruooooooli
262 天前
我是写 Go 的,正好今天线上偶现了一个问题,服务像是暂停了,没有任何日志,进程也在,就是没法响应,定位不了问题,没有头绪。
hefish
262 天前
一个说英文的,吐槽时态语法太复杂了, 然后一个说中文的反驳,说时态语法有啥复杂的。。。
然后两个人相互吵啊。。。吵啊。。。。然后其中一个人把微信截图发到论坛上来了。。。
然后我就跟帖了。。。
yannxia
262 天前
@ruooooooli #24 goroutine trace ,把 go pprof 打开,多半哪里有个无超时的地方 Hang 了,go 还是挺好排查问题的……
ruooooooli
261 天前
@yannxia 看了 pprof 的,进程没法响应,也抓不到😂
skull
261 天前
java 不就是 springboot ,这句无力吐槽
sleepybear1113
261 天前
@skull #28 对于上图场景下,Java 就是 Spring Boot 我觉得没啥问题。互联网场景有哪几个不用 Spring Boot ?

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

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

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

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

© 2021 V2EX