2011-09-16 51 views
2

可能重複:
deleting shared memory with ipcrm in Linux這個「共享內存」IPC對象被刪除了嗎?

我運行Fedora 15的64位。我有一些未被進程清理的共享內存。你可以看到共享內存,當你調用ipcs -m

------ Shared Memory Segments -------- 
key  shmid  owner  perms  bytes  nattch  status  
0x51012a29 294919  trevor  666  194400  2      

當我打電話ipcrm -m 294919,然後檢查,看看是否共享內存刪除您看到:

------ Shared Memory Segments -------- 
key  shmid  owner  perms  bytes  nattch  status  
0x00000000 294919  trevor  666  194400  2   dest 

IMO共享內存仍然是那裏......因爲當我打電話給ipcs -m時它顯示出來。這個共享內存是否真的被刪除?

+0

(如果我錯過了一些細微之處,請解釋。例如像。也許「被刪除,但由於Linux的慣例您刪除仍共享內存,因爲... $ INSERT_EXPLANATION顯示了」。也許'它被刪除了...'dest'意味着共享內存被破壞了......它不會從ipcs -m中刪除,除非你這樣做')。 –

回答

2

做一點點谷歌搜索。這是我發現的;

dest顯然意味着被標記爲被銷燬。我猜測它不會被銷燬,除非它被引用或是暫時的狀態。

http://www.puschitz.com/TuningLinuxForOracle.shtml

+0

雅我剛剛發現「dest」意味着標記爲破壞。爲了讓共享內存段消失,你需要使用共享內存段來終止進程。 –

+0

soln:當你調用'ipcs -mp'時,你會得到一個與共享內存段相關的PID列表。然後你可以根據PID來殺死或者通過執行'ps -ef |來查找PID的名字grep PID'。我查看了誰在使用共享內存,然後殺死它。 –