Go是否会像Java一样受到微妙的内存泄漏?

这是事实:

  • Go语言有一个垃圾收集器。

  • Java有垃圾回收

  • 许多Java程序都有(微妙的或没有的)内存泄漏

由于有内存泄漏(不适用于微弱的心脏,这个问题可能会动摇你的信念)的Java程序的一个例子,在这里看到的关于所谓的Tomcat的一个小Java程序,它甚至有一个“查找泄漏”按钮:有什么办法以避免在Tomcat中取消部署内存泄漏?

所以我想知道:用Go编写的程序是否会表现出与某些用Java编写的程序一样的(细微或不细微的)内存泄漏?


慕容森
浏览 223回答 3
3回答

千巷猫影

您在这里混淆了不同类型的内存泄漏。基于Java(或任何其他基于GC的语言)的令人讨厌的,基于显式内存管理的内存泄漏已消失。这些泄漏是由于完全失去对内存块的访问而没有将其标记为未使用引起的。在计算机可以阅读我们的思想之前,Java以及地球上其他所有语言仍然存在“内存泄漏”,并且这种情况将在可预见的将来出现。这些泄漏是由代码/程序员保留对技术上不再需要的对象的引用引起的。这些从根本上讲是逻辑错误,使用当前技术无法用任何语言阻止。

当年话下

Go程序很可能会出现内存泄漏。Go的当前实现有一个简单的标记清除垃圾收集器。这仅用作临时解决方案,而不用作长期垃圾收集器。请参阅此页面以获取更多信息。看标题下Go Garbage Collector。如果您愿意,该页面甚至包含指向当前版本的代码的链接。

杨__羊羊

“内存泄漏”是指程序员认为要释放的一块内存没有被释放。无论是否收集垃圾,这种情况都可能以任何语言发生。GC语言中的常见原因是保留了对内存的其他引用。“语言不会导致内存泄漏,程序员不会导致内存泄漏”。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go