一尘不染

Go 是否会遭受与 Java 相同的微妙内存泄漏?

go

以下是事实:

  • Go 语言有一个垃圾收集器。
  • Java 有垃圾回收机制
  • 许多 Java 程序都有(微妙或不明显)内存泄漏

作为一个有内存泄漏的 Java 程序的例子(不适合胆小的人,这个问题可能会动摇你的信念),

所以我想知道:用 Go 编写的程序是否会表现出与一些用 Java 编写的程序所表现出的相同类型(微妙或不明显)的内存泄漏?


阅读 156

收藏
2021-12-10

共1个答案

一尘不染

您在这里混淆了不同类型的内存泄漏。

令人发指的、基于显式内存管理的内存泄漏在 Java(或任何其他基于 GC 的语言)中消失了。这些泄漏是由于完全失去对内存块的访问权限而没有将它们标记为未使用而引起的。

在计算机可以读取我们的思想之前,Java 和地球上所有其他语言中仍然存在“内存泄漏”,并且在可预见的未来仍然存在。这些泄漏是由代码/程序员保留对技术上不再需要的对象的引用造成的。这些基本上是逻辑错误,使用当前技术无法通过任何语言来防止。

2021-12-10