2

可能重复:
内存泄漏是否正常?

我在某处读到,在需要内存泄漏的特殊情况下,在极少数情况下实际上是一件好事。但我不记得到底是什么了!

有谁知道或记得这样的论点?

谢谢,阿迪

4

8 回答 8

5

我能想到的唯一需要内存泄漏的情况如下:

(除了第一个之外,它们都有点令人费解)

  • 内存泄漏将是编程课中很好的学习练习的学术情况;包括追踪防止泄漏。

  • 一个分析/测试场景,我们希望了解我们的软件在泄漏情况下的行为。

  • 编写一个泄漏的应用程序来测试/调试一个分析应用程序。

于 2008-11-27T15:26:49.137 回答
1

Memory leaks are never "OK". Sometimes you need to allocate a piece of memory and not deallocate it because it will be needed later, but that isn't a memory leak. But saying things like leaking memory avoids memory fragmentation is like saying it's better to just skip work today without calling in to avoid being late.

于 2008-11-27T18:39:29.793 回答
1

哇,我很想知道你是从哪里听说的。内存泄漏就是这样,内存的意外泄漏会浪费资源。我看不出有任何理由想要这种行为,除非你正在构建你希望你的竞争对手使用的软件(就像美国人对俄罗斯人所做的那样,他们让他们窃取管道控制软件)!

于 2008-11-27T14:45:28.703 回答
1

我能想到的唯一接近的事情是当您想要测试代码以处理内存不足的情况时。这对于没有交换空间的嵌入式系统很重要,其中内存不足是一种致命的情况。

如果您想通过自动化单元测试获得接近 100% 的代码覆盖率,您将必须找出某种方法来使自动化单元测试中的特定分配请求失败(这说起来容易做起来难)。

一旦你有了它,你需要为每个分配请求编写一个单元测试,以确保你有正确处理该分配的内存不足故障(大量工作)。

于 2008-11-27T14:50:53.950 回答
0

我从来没有听说过内存泄漏是件好事。

在现代操作系统中,它们几乎没有 5-10 年前那么糟糕。那时,在监管程序和内存泄漏方面更糟糕的操作系统会导致内存永久丢失,直到操作系统重新启动。

这些天来,这不是一个真正的问题。因此,最常见的“内存泄漏”是当事情没有正确清理错误并退出程序时。当程序即将终止时,通常可以让内存保持未释放状态,因为当程序被操作系统拆除时,所有这些都会以任何方式重新释放。

在程序运行时,我想不出你想要内存泄漏的理由。

于 2008-11-27T14:45:31.870 回答
-1

@Adi Barda:

In the long run, issues with more memory consumed by leaked objects will outweight memory fragmentation issues.

于 2008-11-27T18:33:30.240 回答
-1

如果您是一家托管公司,他们会为服务器的内存升级收取 $$$++ 的费用,那么它们会很好。

于 2008-11-27T14:47:06.877 回答
-2

如何避免内存碎片?这不是一个足够好的理由吗?

于 2008-11-27T16:36:48.073 回答