最近,我从一位“高级”开发人员/同事那里得到了一些关于 C# 垃圾收集器的听起来非常错误的建议,例如......
这对我来说听起来非常可疑,据我所知,C# 和 Java 垃圾收集器之间的区别如下......
- C# 是一代垃圾
收集器,Java是并发标记
横扫 1.6,G1 成为新产品
默认(世代)垃圾
收集器采用 Java 7 并具有
从 ~1.6.21 开始是可选的。目前
我所知
- C# 作为一种语言有能力
手动处置以下物体
实施
IDisposable
。 Java必须
始终使用垃圾收集,
尽管有些框架如 SWT
需要你手动调用方法
释放底层内存
本机代码。
我意识到 Java 和 C# 只是语言,垃圾收集器是运行时的一个组件,但是对于本例,我特别谈论 Sun/Oracle JVM 和 Microsoft .NET 运行时。
有人有反馈吗?
从广义上讲,你得到的建议都是胡言乱语。
C# 和 Java 都有 GC 来尝试优化大量小对象的快速恢复。它们旨在解决相同的问题,它们的处理方式略有不同,但作为用户,使用它们的方法的技术差异很小,对于大多数用户来说甚至不存在。
IDisposable
与 GC 本身无关。这是命名方法的标准方式,否则将被调用close
, destroy
, dispose
等等,在Java中经常这样称呼。 Java 7 有一个提议添加一些与using
会调用类似的关键字close
method.
C# 中的“析构函数”指的是终结器 - 这样做是为了迷惑 C++ 程序员。 :) CLR 规范本身将它们称为终结器,就像 JVM 一样。
Java 和 C#/CLR 在很多方面有所不同(用户值类型、属性、泛型以及称为 Linq 的整个相关功能系列),但 GC 是您可以在需要之前开发大量软件的领域。非常担心它们之间的差异。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)