为什么 Java 垃圾自动回收,面试的时候还要问垃圾回收机制?

2017-10-05 15:07:04 +08:00
 1536011373
Java 面试必问的就是垃圾回收,为什么 Java 垃圾自动回收,面试的时候还要问垃圾回收机制?
11981 次点击
所在节点    程序员
67 条回复
gnaggnoyil
2017-10-07 09:14:56 +08:00
基于 JVM 的开发者跑去了解主流 JVM 的 GC 实现和适应方式本身就是一件十分讽刺的事情:JVM 上的 GC 原本目的就是为了让基于其上的开发者可以无视内存的管理而设计出来的抽象,结果到头来大量开发者不得不去 overfitting 对应 JVM 的 GC 实现,从这一点上看来 JVM 的全局托管式 GC 作为一种抽象层级真的是完全失败,相比而言 C++/Rust 的 RAII 在内存和资源管理上的设计水平远高于 JVM 的 GC ——而且还不需要 hack 特定实现的实现原理.
sagaxu
2017-10-07 14:30:57 +08:00
@gnaggnoyil 但是 C++的指针容器不是线程安全的,也要手动处理循环引用。Rust 也一样,需要时刻明确 ownership,多线程时还要搞明白 Send 和 Sync。门槛可比 JVM 的 GC 高的多,JVM 语言只要留意别让全局变量持有对象引用,其他内存问题一般不用管了,极少数性能非常敏感的库,才会去玩 off-heap 那套东西,比如 netty 的 buffer,netty 不但大玩 off-heap,还用 JNI 实现了 JDK 不支持的功能,但这只是月薪 50K 以上开发才需要熟悉的事情,一般人碰不着。
noli
2017-10-07 17:39:32 +08:00
因为写 Java 的人太多。
这样在面试的时候面临的问题就不是找不找到最适合的,而是找到最好的。
宁可技能用不上,也要找一个强一点的,付同样的工资,美滋滋呀美滋滋。
DoctorCat
2017-10-07 21:11:39 +08:00
@sagaxu JNI 写个库不是读读文档、有内存管理意识,明白 Direct Memory 和观察 GCLog 就搞定的么… 50k 的待遇这么高…卧勒个槽。
DoctorCat
2017-10-07 21:15:50 +08:00
@gnaggnoyil 历史缘故历史缘故,要说对比一下,Python VM 的 GC vs JVM 的可以比一下的…
sagaxu
2017-10-07 22:36:42 +08:00
@DoctorCat 读读文档就能写出 netty 这样水准的库,鹅厂 3.3 起,阿里 P8 起,税后 50K 都不算高,毕竟现在写个增删改查都 15K 以上了
iceheart
2017-10-13 09:58:53 +08:00
@gnaggnoyil 没错,内存管理这么重要的事,就是得程序员来做,交给 jvm 就是扯淡。

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

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

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

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

© 2021 V2EX