加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 为了垃圾收集而避免创建对象仍然有意义吗?

发布时间:2020-12-15 04:40:30 所属栏目:Java 来源:网络整理
导读:例如,在服务适配器中,您可能: 一个.有一个输入数据模型和一个输出数据模型,甚至可能是不可变的,具有不同的类,并使用Object Mappers在类之间进行转换并创建一些短期对象 湾有一个数据模型,一些类可能是可变的,但为输入创建的相同对象也作为输出发送 还有其他
例如,在服务适配器中,您可能:

一个.有一个输入数据模型和一个输出数据模型,甚至可能是不可变的,具有不同的类,并使用Object Mappers在类之间进行转换并创建一些短期对象

湾有一个数据模型,一些类可能是可变的,但为输入创建的相同对象也作为输出发送

还有其他一些用例,你必须在有很多对象的清晰代码和用较少对象的不太清晰的代码之间做出选择,我想知道垃圾收集在这个决定中是否还有权重.

解决方法

我应该将此作为评论作为IMO它不符合答案,但它不适合.

即使答案很可能是 – 做任何事情都会使你的代码更具可读性(并且说实话,我仍然会一直遵循这一点);我们在代码库中遇到过这个GC问题.

假设你想要创建一个用户图(我们不得不 – 大约一半)并在内存中加载它们的所有属性并对它们进行一些聚合和过滤等(这不是我的决定),因为这些图重量很大的对象 – 一旦加载了16GB的堆,JVM就会因OOM或GC而失败,这会占用很大的停顿时间.这是可以理解的 – 大量数据需要大量内存,你不能逃避它.提出并且实际工作的解决方案是使用简单的BitSets对其进行建模 – 其中每个位都是属性,并且可能与其他一些数据相关联;到目前为止,这仍然是不可读的,并且非常复杂.大量的转变,大量的数据内在性 – 你必须始终知道3位意味着什么,例如,没有用于usernameIncome的getter,你可以说 – 你必须做很多转换并将其映射到搜索表等等,但它会使GC保持相当低,至少在我们可以接受的范围内.

所以,除非你能证明GC花了你的应用时间这么多 – 你可能更安全,只需添加更多RAM并增加它(除非你有泄漏).我仍然会选择像99这样的清晰代码.(99)%的时间.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读