在使用python写程序的时候,发现一个可以无限迭代的迭代器,从而可以直接将系统中的内存占满,那么占满之后会发生什么呢?
1、创建无限迭代,生成列表,如下:
[root@python ~]# python
Python 2.7.11 (default, Mar 20 2016, 14:21:08)
[GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import itertools
>>> r = map(lambda x :x*x,itertools.count(1))
2、监控使用命令vmstat
[root@python ~]# vmstat 1 -S m #每隔一秒采集一次信息,单位为Mb
3、系统使用情况如下
从上面可以看出,swap使用的越来越多,free的空间越来越少,到最后达到swap的最大值之后,开始恢复内存空间。
系统的内存如下:
4、结论
当内存使用太多,没有剩余的内存的时候,操作系统会直接将进程杀死,如下所示:
[root@python ~]# python
Python 2.7.11 (default, Mar 20 2016, 14:21:08)
[GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import itertools
>>> r = map(lambda x :x*x,itertools.count(1))
Killed
最后一个killed表示杀死进程,开始回收空间。