昨天面试被问了 JVM 中堆和栈的区别,但是我竟然没有回答出来。

2017-06-22 09:59:00 +08:00
 jadetang
感觉这么基础的知识不知道,确实不应该。但是我工作也有一段时间了,我知道了堆和栈的区别对我工作也没有任何帮助啊,平时也用不上。
7684 次点击
所在节点    职场话题
38 条回复
ipwx
2017-06-22 18:50:51 +08:00
@jadetang All right,我说的那个优化针对的是堆上面对象的优化。当然,我不写 Java,只是对 JVM 上面 GC 神调教的案例略有耳闻。如果你有兴趣,我觉得你可以去查找一下这方面的资料。
ihuotui
2017-06-22 19:19:11 +08:00
最高境界是对象不受 gc 影响和扫描
wangdu2012
2017-06-22 19:27:27 +08:00
哪面试的?阿里的人最喜欢搞这种吧
huhu3312
2017-06-22 19:49:34 +08:00
栈是线程私有的,堆是线程共享的。
smileme
2017-06-22 20:31:01 +08:00
@twogoods 哈哈,背都不来背,面试没有诚意啊
twogoods
2017-06-22 21:39:34 +08:00
@smileme 活捉一逗逼
jadetang
2017-06-22 22:30:41 +08:00
@smileme 我最近也没在找工作,但是朋友非得内推,我就随意面试了一下。
undeflife
2017-06-22 23:16:54 +08:00
@ipwx 尾递归不好?有编译器优化的尾递归可以视为普通迭代,不好在哪?
stcasshern
2017-06-22 23:18:31 +08:00
是不是可以这里解释啊,栈保存对堆中数据的引用,以及一些基本类型的数据,堆得话是保存实际数据。??
sunqb
2017-06-22 23:24:28 +08:00
如果你够牛逼,你就知道哪些地方用到了
kx5d62Jn1J9MjoXP
2017-06-23 00:27:34 +08:00
为什么楼上一堆回答性能的, 这根本没回答到点上吧.
栈 /stack 是实现方法 /函数相互调用的基本数据结构, 每个线程都有自己的一个栈, 因为每个线程都要执行自己的方法.
堆 /heap 则顾名思义就是存放一堆对象的内存区域
xuboying
2017-06-23 09:24:54 +08:00
简历里自称的精通程度,和工资,被面试的问题难度挂钩。简历里吹牛就小心被打脸。不会堆栈可以写只会基础 java。
oukichi
2017-06-23 09:31:45 +08:00
讲道理,你的工作用不到堆和栈的话可以赶紧考虑换工作了。
miketeam
2017-06-23 10:15:39 +08:00
那是栈的地址位高还是堆高呢?我看 cs50 里面老师画了一个图,但是忘了!!
ipwx
2017-06-23 10:45:15 +08:00
@ssynhtn 如果堆栈和性能无关,那你了解它干嘛?自娱自乐嘛?
kx5d62Jn1J9MjoXP
2017-06-23 15:12:19 +08:00
@ipwx 我问你牛肉和苹果的区别,你连这两个一个是来自动物一个是来自植物都没做出区分,就大谈特谈牛肉怎么做才好吃,这不是答非所问是什么?
eric2021
2017-06-23 18:04:29 +08:00
吓得我赶紧又去刷了一下题,可还是记不住
dfguo
2017-06-23 18:28:39 +08:00
除非面试官经验比较少,一般面试不会因为一道题把人刷下去的。

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

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

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

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

© 2021 V2EX