字节data面试应该凉了

开始被问蠢了:
java gc 为什么新生代不用标记整理算法,为什么标记复制算法
我一想这不是送分题嘛,
回答:新生代要清除的对象多,标记整理清除对象产生大量碎片之后还要整理,标记复制将存活对象复制到s2,将s1整个清除掉,速度快
又问我为什么标记复制标记整理块?
回答:标记整理每一个存活对象都要向一端移动,标记复制要将对象一个个复制到s2区,在一次整理整个s1区
面试官说这个对象移动和一次整理s1区应该消耗时间一样,你再想想为什么新生代要用标记复制。提示一下,软件都是空间和时间的妥协来达到最好的效果。
僵了一会。。回答:标记复制需要有一块内存不使用,需要空间代价,他应该比标记复制在新生代执行gc的快
那为什么快呢,再给你一分钟时间?
。。。扯了下gc root 引用什么的,


后面感觉到面算法崩了。。。。。面试官也没说答案

大佬能回答一下吗,我查到的明明这两个方法gc时间本来就不一样啊,标记复制就是一次清理s1速度快

算法 判断一个二叉树是否对称

#面经##字节跳动##算法工程师##校招#
全部评论
字节我投的大数据跟其他厂还真不一样,都是抠细节底层,且我也不知道为何都是底层开发,我想业务开发呀😂
1
送花
回复 分享
发布于 2020-08-18 18:56
看了下评论,我来讲点书上的吧。标记复制是将标记的内容复制到空余的survivor区,然后清楚eden和在用的s区。标记整理是将标记的移动到一段,重点来了,同时没有标记的先不清楚,而是移动到后面,最后清楚标记的边界以外的内存。因此标记整理的过程中也涉及到对需要回收对象的复制,而新生代的需要回收的对象比较多,因此慢。再总结一下,就是标记复制只涉及到存活对象的复制,标记整理不管存活不存活都复制。 那有人可能要问了,那为啥要标记整理嘛,啥用没有。一是与新生代不同,老年代用标记整理比较友好,而是不需要多用空间(空闲的s区)
1
送花
回复 分享
发布于 2020-08-22 16:18
秋招专场
校招火热招聘中
官网直投
楼主你好,请问你是实习、校招还是社招?
点赞
送花
回复 分享
发布于 2020-08-18 18:53
复制算法不需要标记把,直接清除把剩下的复制过去就好了,消耗50%空间,但是不产生外部碎片,比较简单,适合新生代这种;标记整理、标记清理都要考虑内存碎片
点赞
送花
回复 分享
发布于 2020-08-18 19:09
快不快不是看具体的场景的吗,反正照JVM这样用,肯定是新生代的标记复制比老年代的标记整理要快的
点赞
送花
回复 分享
发布于 2020-08-18 19:21
是不是因为标记整理的时候因为原来的地方可能会有存活对象不能直接覆盖需要考虑这种东西 但是复制因为那便是空的挪过去就好啊 (不知道 瞎说的 果然我不配进字节
点赞
送花
回复 分享
发布于 2020-08-18 20:02
复制和标记整理都需要标记,但是标记复制是把存活的对象移动到另一块没用过的区域,标记整理是先标记垃圾,清除垃圾之后,把存活的对象移动到区域的一端,如果移动到端终点的时候发现那个地方已经有存活对象,需要再往后移动,直到找到空闲的内存位置。这是我的理解。
点赞
送花
回复 分享
发布于 2020-08-18 20:14
复制就是拿空间换时间啊,下次直接使用s2区就好了,s1区的整理不影响使用的时间效率
点赞
送花
回复 分享
发布于 2020-08-18 20:24
lz手撕代码是什么题
点赞
送花
回复 分享
发布于 2020-08-21 14:05

相关推荐

牛牛不会牛泪:可以先别急着租房,去青旅,或者订个近点的宾馆待几天。先看看要做的能不能学到东西,然后看文档完不完善,写的好不好,mentor对你咋样,公司氛围啥的。情况不对赶快跑路找下家
点赞 评论 收藏
分享
点赞 评论 收藏
分享
3 20 评论
分享
牛客网
牛客企业服务