关于我的胡思乱想:
每次听到内存溢出,我脑海里就会浮现水从容器里溢出的场景。每次听到内存泄露,我就联想到汽车尾气排放。一听内存越界,我就想是不是程序又干了啥违法的事。
out of memory:内存溢出,一看英文名就很清晰了,out of直接说明东西用完了。即程序运行过程中申请的内存大于系统能够提供的内存,导致无法申请到足够的内存。
memory leak:内存泄露,分配内存给临时变量,用完之后却没有被GC回收,始终占用着内存。
out-of-bounds accessing:内存越界,指向系统申请一块内存后,使用时却超出申请范围。
如果还是觉得不清晰,可以来看下面一个例子:
![](https://img.haomeiwen.com/i6844551/7ba8a50dd1a53fd7.png)
把内存比做苹果,我有一篮子观赏性苹果(三个)给朋友们玩(我很抠,玩完了要还给我),给了小红最左边的苹果,给了小明最右边的,给自己留了中间的。
这个时候毛毛来找我要苹果说要玩,我没有了。我就告诉他out of apple(内存溢出),意思是我没有了你下次再来吧。
小红玩到中途想要把中间的苹果也拿走,我就斥责他,告诉他这个苹果不该你拿,不是你的。这就是out-of-bounds accessing(内存越界)。
我和小红、小明玩耍完之后,小红又不把苹果还给我,这就是apple leak(内存泄漏)。
如果小红这样的朋友很多,每次玩完都不还苹果,那我一共只有三个苹果,很可能导致某一天我没法给其他朋友苹果玩,甚至最后一个能让我分给朋友的苹果也没有了。所以 内存泄漏 可能会导致 内存溢出。
更新:我突然觉得,篇头的胡思乱想竟然有理有据了起来,内存溢出,水从容器里溢出的场景,是说容器不够大水才溢出来,把容器认为是内存,一切都变得合理了呢!
网友评论