linux系統中記憶體爆滿之後會如何?

2022-04-04 06:53:04 字數 3609 閱讀 9451

在使用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

>>> import itertools

>>> r = map(lambda x :x*x,itertools.count(1))

2、監控使用命令vmstat

[root@python ~]# vmstat 1 -s m  #每隔一秒採集一次資訊,單位為mb

3、系統使用情況如下

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

r b swpd free buff cache si so bi bo in cs us sy id wa st

1 0 0 851 15 52 0 0 0 0 414 69 34 3 63 0 0

1 0 0 610 15 52 0 0 0 0 995 7 83 17 0 0 0

1 0 0 458 15 52 0 0 0 0 616 13 70 30 0 0 0

1 0 0 345 15 52 0 0 0 0 489 9 70 30 0 0 0

1 0 0 187 15 52 0 0 0 0 694 11 77 23 0 0 0

3 2 29 50 2 18 0 0 220 41400 1154 190 71 23 0 6 0

1 2 238 65 1 13 0 0 580 191392 1232 261 49 25 0 26 0

1 2 375 50 0 12 0 0 1720 134264 1360 284 64 25 0 11 0

0 3 452 50 0 11 0 0 768 75212 758 150 38 13 0 49 0

1 1 528 62 0 9 0 0 192 74668 972 134 52 18 0 30 0

1 1 700 50 0 9 0 0 0 167244 1084 150 55 23 0 22 0

0 3 767 50 0 9 0 0 0 66068 456 48 17 12 0 71 0

1 1 808 60 0 9 0 0 1652 39688 505 191 17 9 0 74 0

0 3 952 50 0 7 0 0 504 141228 1078 191 57 20 0 23 0

0 2 1068 58 0 7 0 0 288 113176 860 127 40 21 0 40 0

2 2 1136 50 0 7 0 0 1584 66656 939 279 46 17 0 37 0

0 4 1252 50 0 7 0 0 276 113460 679 90 31 14 0 55 0

0 6 1266 53 0 8 0 0 904 13332 267 116 8 4 0 88 0

1 0 1339 63 0 7 0 0 216 71196 957 116 43 19 0 38 0

0 2 1549 52 0 7 0 0 0 205896 1196 194 49 31 0 20 0

1 0 1666 71 0 6 0 0 0 114372 948 57 43 19 0 37 0

0 2 1799 51 0 5 0 0 0 130104 1101 214 57 24 0 20 0

1 1 1922 61 0 5 0 0 0 119856 1092 132 51 23 0 26 0

0 2 2002 50 0 5 0 0 0 77788 662 103 31 17 0 52 0

2 0 2093 51 0 5 0 0 32 89104 1054 257 49 25 0 26 0

0 2 16 990 0 1 0 0 3824 19836 786 1639 21 17 0 62 0

從上面可以看出,swap使用的越來越多,free的空間越來越少,到最後達到swap的最大值之後,開始恢復記憶體空間。

系統的記憶體如下:

[root@python ~]# free -m

total used free shared buffers cached

mem: 996 64 932 0 1 10

-/+ buffers/cache: 52 943

swap: 2015 14 2001

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

>>> import itertools

>>> r = map(lambda x :x*x,itertools.count(1))

killed

最後乙個killed表示殺死程序,開始**空間。

linux系統記憶體爆滿的解決辦法!

1.首先用free工具檢查一下記憶體的使用情況 這個是我的linux時時資料 mem 4046824 763620 3283204 9004 10284 61560 buffers cache 691776 3355048 total used free shared buffers cached ...

Linux之centos系統安裝之後網路的配置

首先更改eth0的配置 開啟檔案 vi etc sysconfig network scripts ifcfg eth0 具體內容如下 device eth0 hwaddr 00 0c 29 e2 df 4c type ethernet uuid 345a20c2 1d0e 4afd 8619 e7...

linux記憶體檔案系統

在linux中可以將一部分記憶體當作分割槽來使用,我們稱之為ramdisk。對於一些經常被訪問的檔案,而它們又不會被更改,可以將它們通過ramdisk放在記憶體中,即可明顯地提高系統的效能。當然你的記憶體可要足夠大了。ramdisk有兩種,一種可以格式化,載入,在linux核心2.0 2.2就已經支...