内存溢出是指程序请求内存而没有足够的内存空间来使用它。显示内存不足。例如,当您请求内存时,您得到一个整数,但它存储的数字只能存储为Long。这是内存溢出。
内存泄漏是指程序请求内存但无法释放分配的内存空间。尽管内存泄漏的危害可以忽略不计,但无论如何,内存泄漏的累积影响都是严重的。如果你有很多内存,它迟早会被占用。
内存泄漏可以分为四类。
1.频繁内存泄漏。存在内存泄漏的代码会被多次执行,每次执行都会导致内存泄漏。
2.可能会发生内存泄漏。泄漏内存的代码仅在某些情况或操下发生。频繁和偶发是相对的。在某些情况下,偶尔发生的事情可能会变得很常见。因此,测试环境和测试方法对于识别内存泄漏非常重要。
3.一次性内存泄漏。导致内存泄漏的代码仅执行一次,或者算法中的缺陷导致在任何给定时间仅泄漏一个内存块。例如,如果在类的构造函数中分配了内存,但在其析构函数中未释放内存,则内存泄漏仅发生一次。
4.隐式内存泄漏。程序在运行时不断分配内存,但直到运行结束才释放内存。严格来说,这里不存在内存泄漏,因为程序最终释放了所有请求的内存。但对于需要运行数天、数周甚至数月的服务器程序来说,如果不及时释放内存,最终可能会耗尽系统内存。因此,这种类型的内存泄漏称为隐式内存泄漏。
上一篇:内存泄漏与内存溢出
下一篇:ios内存泄漏和内存溢出