栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

结构与类

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

结构与类

难道 更快 创建这些对象的类或结构?

您是唯一可以确定该问题答案的人。两种方法都尝试一下, 测量
有意义的,以用户为中心的相关性能指标,然后您将知道更改是否对相关场景中的实际用户产生了有意义的影响。

结构消耗更少的堆内存(因为它们 更小
且更易于压缩,而不是因为它们“在堆栈上”)。但是,它们比参考副本需要更长的时间。我不知道您针对内存使用或速度的性能指标是什么;这里需要权衡,您就是知道这是什么的人。

它是 更好的 创建这些对象的类或结构?

也许是上课,也许是结构。作为一个经验法则:如果对象是:
1.小
2.逻辑上是一个不可变的值
3.有很多
这样的话,我考虑将其设为结构。否则我会坚持使用引用类型。

如果您需要更改结构的某些字段,通常最好构建一个构造函数,该构造函数返回正确设置了字段的整个新结构。也许稍微慢一点(测量一下!),但是从逻辑上讲,更容易推理。

垃圾收集器是否平等地处理堆和堆栈上的对象?

,它们不一样,因为 堆栈上的对象是集合的根 。垃圾收集器不需要询问“堆栈中的这个东西还活着吗?”
因为该问题的答案始终是“是的,它在堆栈上”。(现在,您不能依靠它来 使 对象 保持
活动状态,因为堆栈是实现细节。允许抖动引入优化,例如,注册通常是堆栈值的内容,然后再将其保存在堆栈中因此,GC并不知道它还活着。注册的对象可以在不再次读取保存在其上的寄存器时,主动收集其后代。)

但是垃圾收集器 确实
必须将堆栈上的对象视为活动对象,就像将已知的活动对象视为活动对象一样。堆栈上的对象可以引用需要保持活动状态的堆分配对象,因此,为了确定活动集,GC必须将堆栈对象视为活动的堆分配对象。但是显然,出于压缩堆的目的,它们
被视为“活动对象”,因为它们首先不在堆中。

明白了吗?



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/576152.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号