溢出这个概念,相信大家,都不陌生。不过具体堆溢出和栈溢出有什么区别,可能很多人就在这方面迷糊了。下面我来举个小例子来说明。
堆溢出
拿新浪微博来说,新浪微博最近推出了一个新功能,这个新功能也是我想写这篇文章的原因之一。在微博里搜索“全景图片”关键字,微博客户端就会崩溃。
为什么会崩溃呢?这里的原因也很明显。微博的全景图片和视频不一样,视频需要你手动进行点击加载,而微博的全景图片自动就会加载。这样一来,我们在微博中搜索全景图片的时候,微博的客户端就会自动加载很多全景图片。堆瞬间被用完,客户端崩溃。
栈溢出
还是拿新浪微博来说,假设a关注了b,b又关注了a。那么执行以下步骤。
1. 在a的关注中找到b打开b,然后在b的关注中找到a。
2. 重复以上步骤n次以后,微博客户端就会崩溃。
这就是嵌套递归,将栈用完并超出。
当然这个例子,理解成堆用完也是可以的。