當前位置:首頁 » 文件管理 » cache的緩存不釋放

cache的緩存不釋放

發布時間: 2022-06-21 09:21:35

『壹』 如何釋放linux cache佔用的內存

Linux釋放內存的命令: sync echo 1 > /proc/sys/vm/drop_caches drop_caches的值可以是0-3之間的數字,代表不同的含義: 0:不釋放(系統默認值) 1:釋放頁緩存 2:釋放dentries和inodes 3:釋放所有緩存 釋放完內存後改回去讓系統重新自動分...

『貳』 linux buffer cache何時釋放

當在Linux下頻繁存取文件後,物理內存會很快被用光,當程序結束後,內存不會被正常釋放,而是一直作為caching。這個問題,貌似有不少人在問,不過都沒有看到有什麼很好解決的辦法。那麼我來談談這個問題。
一、通常情況
先來說說free命令:
# free -m
total used free shared buffers cached
Mem: 249 163 86 0 10 94
-/+ buffers/Cache: 58 191
SWAP: 511 0 511
其中:
total 內存總數
used 已經使用的內存數
free 空閑的內存數
shared 多個進程共享的內存總額
buffers buffer Cache和cached Page Cache 磁碟緩存的大小
-buffers/cache (已用)的內存數:used - buffers - cached
+buffers/cache(可用)的內存數:free + buffers + cached
可用的memory=free memory+buffers+cached
有了這個基礎後,可以得知,我現在used為163MB,free為86MB,buffer和cached分別為10MB,94MB。
那麼我們來看看,如果我執行復制文件,內存會發生什麼變化。
# cp -r /etc ~/test/

『叄』 如何清空linux的cache

#清理Linux系統緩存
[root@oracle ~]# echo 1 > /proc/sys/vm/drop_caches

註:1>. /proc是一個虛擬文件系統,可以通過對它的讀寫操作作為與kernel實體間進行通信的一種手段。也就是說可以通過修改/proc中的文件,來對當前kernel的行為做出調整。也就是說我們可以通過調整/proc/sys/vm/drop_caches來釋放內存。
0 – 不釋放1 – 釋放頁緩存2 – 釋放文件節點緩存和目錄項緩存
3 – 釋放所有緩存

『肆』 cached 的內存怎麼釋放

因為LINUX的內核機制,一般情況下不需要特意去釋放已經使用的cache。這些cache起來的內容可以增加文件以及的讀寫速度。
Mem: 515588 295452 220136 0 2060 64040
-/+ buffers/cache: 229352 286236
Swap: 682720 112 682608 其中第一行用全局角度描述系統使用的內存狀況:
total——總物理內存
used——已使用內存,一般情況這個值會比較大,因為這個值包括了cache+應用程序使用的內存
free——完全未被使用的內存
shared——應用程序共享內存
buffers——緩存,主要用於目錄方面,inode值等(ls大目錄可看到這個值增加)
cached——緩存,用於已打開的文件note:total=used+free
used=buffers+cached (maybe add shared also) 第二行描述應用程序的內存使用:
前個值表示-buffers/cache——應用程序使用的內存大小,used減去緩存值
後個值表示+buffers/cache——所有可供應用程序使用的內存大小,free加上緩存值note:-buffers/cache=used-buffers-cached
+buffers/cache=free+buffers+cached 第三行表示swap的使用:
used——已使用
free——未使用 cache釋放:
To free pagecache:
echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches 說明,釋放前最好sync一下,防止丟數據。

『伍』 手機中的清空cache是什麼意思

cache是緩存的意思,清空cache就是清空緩存,有利於加快手機的運行速度。

手機緩存就是數據交換的緩沖區(稱作Cache)。緩存是CPU的一部分,它存在於CPU中,而CPU存取數據的速度則非常的快,一秒鍾能夠存取、處理十億條指令和數據(術語:CPU主頻1G),而內存就慢很多,快的內存能夠達到幾十兆就不錯了,兩者的速度差異很大,緩存是為了解決CPU速度和內存速度的速度差異問題。

當在打開文件時,系統便會將數據從內存中復制到一個緩沖區,而再打開文件時,系統會直接讀取緩存中的數據,則不用到內存中讀取,這樣瀏覽文件的速度會比較快。

但是每一部手機的內存都是有限的。當內存接近飽和時,手機運行就會出現卡頓的情況,開啟APP速度也會變慢,內存莫名減少,其實這是手機中的垃圾緩存過多導致的現象,這些垃圾緩存主要就是使用APP過程中產生的視頻、文字、圖片緩存。這時就需要進行緩存和垃圾清理。

(5)cache的緩存不釋放擴展閱讀:

一、緩存(cache)的功能是提高CPU數據輸入輸出的速率。cache容量小但速度快,內存速度較低但容量大,通過優化調度演算法,系統的性能會大大改善,彷彿其存儲系統容量與內存相當而訪問速度近似cache。

二、緩存(cache)的工作原理是當CPU要讀取一個數據時,首先從CPU緩存中查找,找到就立即讀取並送給CPU處理;沒有找到,就從速率相對較慢的內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。

三、緩存(cache)大小是CPU的重要指標之一,其結構與大小對CPU速率的影響非常大。簡單地講,緩存就是用來存儲一些常用或即將用到的數據或指令,當需要這些數據或指令的時候直接從緩存中讀取,這樣比到內存甚至硬碟中讀取要快得多,能夠大幅度提升cpu的處理速率。

『陸』 echo 3 > /proc/sys/vm/drop_caches無法釋放cache

先運行 sync
然後再執行 echo 3 > /proc/sys/vm/drop_caches

『柒』 linux內存中的cache真的能被回收么

不了解。這樣的人的第一反應是:天啊,內存用了好多,70個多G,可是我幾乎沒有運行什麼大程序啊?為什麼會這樣?Linux好占內存!
自以為很了解。這樣的人一般自習評估過會說:嗯,根據我專業的眼光看出來,內存才用了17G左右,還有很多剩餘內存可用。buffers/cache佔用的較多,說明系統中有進程曾經讀寫過文件,但是不要緊,這部分內存是當空閑來用的。
真的很了解。這種人的反應反而讓人感覺最不懂Linux,他們的反應是:free顯示的是這樣,好吧我知道了。神馬?你問我這些內存夠不夠,我當然不知道啦!我特么怎麼知道你程序怎麼寫的?
根據目前網路上技術文檔的內容,我相信絕大多數了解一點Linux的人應該處在第二種層次。大家普遍認為,buffers和cached所佔用的內存空間是可以在內存壓力較大的時候被釋放當做空閑空間用的。但真的是這樣么?在論證這個題目之前,我們先簡要介紹一下buffers和cached是什麼意思:
什麼是buffer/cache?
buffer和cache是兩個在計算機技術中被用濫的名詞,放在不通語境下會有不同的意義。在Linux的內存管理中,這里的buffer指Linux內存的:Buffer cache。這里的cache指Linux內存中的:Page cache。翻譯成中文可以叫做緩沖區緩存和頁面緩存。在歷史上,它們一個(buffer)被用來當成對io設備寫的緩存,而另一個(cache)被用來當作對io設備的讀緩存,這里的io設備,主要指的是塊設備文件和文件系統上的普通文件。但是現在,它們的意義已經不一樣了。在當前的內核中,page cache顧名思義就是針對內存頁的緩存,說白了就是,如果有內存是以page進行分配管理的,都可以使用page cache作為其緩存來管理使用。當然,不是所有的內存都是以頁(page)進行管理的,也有很多是針對塊(block)進行管理的,這部分內存使用如果要用到cache功能,則都集中到buffer cache中來使用。(從這個角度出發,是不是buffer cache改名叫做block cache更好?)然而,也不是所有塊(block)都有固定長度,系統上塊的長度主要是根據所使用的塊設備決定的,而頁長度在X86上無論是32位還是64位都是4k。
明白了這兩套緩存系統的區別,就可以理解它們究竟都可以用來做什麼了。
什麼是page cache
Page cache主要用來作為文件系統上的文件數據的緩存來用,尤其是針對當進程對文件有read/write操作的時候。如果你仔細想想的話,作為可以映射文件到內存的系統調用:mmap是不是很自然的也應該用到page cache?在當前的系統實現里,page cache也被作為其它文件類型的緩存設備來用,所以事實上page cache也負責了大部分的塊設備文件的緩存工作。
什麼是buffer cache
Buffer cache則主要是設計用來在系統對塊設備進行讀寫的時候,對塊進行數據緩存的系統來使用。這意味著某些對塊的操作會使用buffer cache進行緩存,比如我們在格式化文件系統的時候。一般情況下兩個緩存系統是一起配合使用的,比如當我們對一個文件進行寫操作的時候,page cache的內容會被改變,而buffer cache則可以用來將page標記為不同的緩沖區,並記錄是哪一個緩沖區被修改了。這樣,內核在後續執行臟數據的回寫(writeback)時,就不用將整個page寫回,而只需要寫回修改的部分即可。
如何回收cache?
Linux內核會在內存將要耗盡的時候,觸發內存回收的工作,以便釋放出內存給急需內存的進程使用。一般情況下,這個操作中主要的內存釋放都來自於對buffer/cache的釋放。尤其是被使用更多的cache空間。既然它主要用來做緩存,只是在內存夠用的時候加快進程對文件的讀寫速度,那麼在內存壓力較大的情況下,當然有必要清空釋放cache,作為free空間分給相關進程使用。所以一般情況下,我們認為buffer/cache空間可以被釋放,這個理解是正確的。
但是這種清緩存的工作也並不是沒有成本。理解cache是干什麼的就可以明白清緩存必須保證cache中的數據跟對應文件中的數據一致,才能對cache進行釋放。所以伴隨著cache清除的行為的,一般都是系統IO飆高。因為內核要對比cache中的數據和對應硬碟文件上的數據是否一致,如果不一致需要寫回,之後才能回收。
在系統中除了內存將被耗盡的時候可以清緩存以外,我們還可以使用下面這個文件來人工觸發緩存清除的操作:
方法是:
當然,這個文件可以設置的值分別為1、2、3。它們所表示的含義為:
echo 1 > /proc/sys/vm/drop_caches:表示清除pagecache。
echo 2 > /proc/sys/vm/drop_caches:表示清除回收slab分配器中的對象(包括目錄項緩存和inode緩存)。slab分配器是內核中管理內存的一種機制,其中很多緩存數據實現都是用的pagecache。
echo 1 > /proc/sys/vm/drop_caches:表示清除pagecache和slab分配器中的緩存對象。
cache都能被回收么?
我們分析了cache能被回收的情況,那麼有沒有不能被回收的cache呢?當然有。我們先來看第一種情況:
tmpfs
大家知道Linux提供一種「臨時」文件系統叫做tmpfs,它可以將內存的一部分空間拿來當做文件系統使用,使內存空間可以當做目錄文件來用。現在絕大多數Linux系統都有一個叫做/dev/shm的tmpfs目錄,就是這樣一種存在。當然,我們也可以手工創建一個自己的tmpfs,方法如下:
於是我們就創建了一個新的tmpfs,空間是20G,我們可以在/tmp/tmpfs中創建一個20G以內的文件。如果我們創建的文件實際佔用的空間是內存的話,那麼這些數據應該佔用內存空間的什麼部分呢?根據pagecache的實現功能可以理解,既然是某種文件系統,那麼自然該使用pagecache的空間來管理。我們試試是不是這樣?
我們在tmpfs目錄下創建了一個13G的文件,並通過前後free命令的對比發現,cached增長了13G,說明這個文件確實放在了內存里並且內核使用的是cache作為存儲。再看看我們關心的指標: -/+ buffers/cache那一行。我們發現,在這種情況下free命令仍然提示我們有110G內存可用,但是真的有這么多麼?我們可以人工觸發內存回收看看現在到底能回收多少內存:
可以看到,cached佔用的空間並沒有像我們想像的那樣完全被釋放,其中13G的空間仍然被/tmp/tmpfs中的文件佔用的。當然,我的系統中還有其他不可釋放的cache佔用著其餘16G內存空間。那麼tmpfs佔用的cache空間什麼時候會被釋放呢?是在其文件被刪除的時候.如果不刪除文件,無論內存耗盡到什麼程度,內核都不會自動幫你把tmpfs中的文件刪除來釋放cache空間。
這是我們分析的第一種cache不能被回收的情況。還有其他情況,比如:
共享內存
共享內存是系統提供給我們的一種常用的進程間通信(IPC)方式,但是這種通信方式不能在shell中申請和使用,所以我們需要一個簡單的測試程序,代碼如下:
程序功能很簡單,就是申請一段不到2G共享內存,然後打開一個子進程對這段共享內存做一個初始化操作,父進程等子進程初始化完之後輸出一下共享內存的內容,然後退出。但是退出之前並沒有刪除這段共享內存。我們來看看這個程序執行前後的內存使用:
cached空間由16G漲到了18G。那麼這段cache能被回收么?繼續測試:
結果是仍然不可回收。大家可以觀察到,這段共享內存即使沒人使用,仍然會長期存放在cache中,直到其被刪除。刪除方法有兩種,一種是程序中使用shmdt(),另一種是使用ipcrm命令。我們來刪除試試:
刪除共享內存後,cache被正常釋放了。這個行為與tmpfs的邏輯類似。內核底層在實現共享內存(shm)、消息隊列(msg)和信號量數組(sem)這些POSIX:XSI的IPC機制的內存存儲時,使用的都是tmpfs。這也是為什麼共享內存的操作邏輯與tmpfs類似的原因。當然,一般情況下是shm佔用的內存更多,所以我們在此重點強調共享內存的使用。說到共享內存,Linux還給我們提供了另外一種共享內存的方法,就是:
mmap
mmap()是一個非常重要的系統調用,這僅從mmap本身的功能描述上是看不出來的。從字面上看,mmap就是將一個文件映射進進程的虛擬內存地址,之後就可以通過操作內存的方式對文件的內容進行操作。但是實際上這個調用的用途是很廣泛的。當malloc申請內存時,小段內存內核使用sbrk處理,而大段內存就會使用mmap。當系統調用exec族函數執行時,因為其本質上是將一個可執行文件載入到內存執行,所以內核很自然的就可以使用mmap方式進行處理。我們在此僅僅考慮一種情況,就是使用mmap進行共享內存的申請時,會不會跟shmget()一樣也使用cache?
同樣,我們也需要一個簡單的測試程序:
這次我們乾脆不用什麼父子進程的方式了,就一個進程,申請一段2G的mmap共享內存,然後初始化這段空間之後等待100秒,再解除影射所以我們需要在它sleep這100秒內檢查我們的系統內存使用,看看它用的是什麼空間?當然在這之前要先創建一個2G的文件./mmapfile。結果如下:
然後執行測試程序:
我們可以看到,在程序執行期間,cached一直為18G,比之前漲了2G,並且此時這段cache仍然無法被回收。然後我們等待100秒之後程序結束。
程序退出之後,cached佔用的空間被釋放。這樣我們可以看到,使用mmap申請標志狀態為MAP_SHARED的內存,內核也是使用的cache進行存儲的。在進程對相關內存沒有釋放之前,這段cache也是不能被正常釋放的。實際上,mmap的MAP_SHARED方��申請的內存,在內核中也是由tmpfs實現的。由此我們也可以推測,由於共享庫的只讀部分在內存中都是以mmap的MAP_SHARED方式進行管理,實際上它們也都是要佔用cache且無法被釋放的。
最後
我們通過三個測試例子,發現Linux系統內存中的cache並不是在所有情況下都能被釋放當做空閑空間用的。並且也也明確了,即使可以釋放cache,也並不是對系統來說沒有成本的。總結一下要點,我們應該記得這樣幾點:
當cache作為文件緩存被釋放的時候會引發IO變高,這是cache加快文件訪問速度所要付出的成本。
tmpfs中存儲的文件會佔用cache空間,除非文件刪除否則這個cache不會被自動釋放。
使用shmget方式申請的共享內存會佔用cache空間,除非共享內存被ipcrm或者shmdt,否則相關的cache空間都不會被自動釋放。
使用mmap方法申請的MAP_SHARED標志的內存會佔用cache空間,除非進程將這段內存munmap,否則相關的cache空間都不會被自動釋放。
實際上shmget、mmap的共享內存,在內核層都是通過tmpfs實現的,tmpfs實現的存儲用的都是cache。

『捌』 cache是什麼意思,可不可以刪除

cache是緩存的意思
這個QQVideo.Cache是QQ直播自帶的一個緩存文件夾
自己想啊看QQ直播不就得邊下載邊看么,那麼看的時候下載的文件在什麼地方呢?就是這個QQVideo.Cache文件夾。
這個文件夾裡面的文件當然能刪除,只要沒開著QQ直播就能刪除。

『玖』 linuxcache為什麼不自動釋放

一般情況下不建議這么做, 如果你確定向的話還是可以的,當然你的linux別太老
首先運行sync把未存檔的cache都寫入磁碟,稍等片刻, 或者是直接運行sync 兩遍
然後 echo 1 > /proc/sys/vm/drop_caches, 就可以釋放大部分的cache了
這里你可以選擇
1 釋放緩存的文件內容
2 釋放緩存的目錄信息
3 同時釋放緩存的目錄信息和文件內容

熱點內容
點歌機怎麼選切換安卓系統 發布:2025-01-17 14:05:33 瀏覽:719
java壓縮與解壓縮 發布:2025-01-17 14:03:24 瀏覽:925
python代碼保護 發布:2025-01-17 14:02:22 瀏覽:323
王者榮耀電腦如何改戰區安卓 發布:2025-01-17 13:23:18 瀏覽:814
華為手機如何開啟說出密碼 發布:2025-01-17 13:23:12 瀏覽:101
伺服器在美國說明什麼 發布:2025-01-17 13:14:10 瀏覽:11
啟辰t90有哪些配置 發布:2025-01-17 13:05:40 瀏覽:38
手機微博密碼怎麼改密碼忘了怎麼辦 發布:2025-01-17 13:04:44 瀏覽:959
微笑雲伺服器 發布:2025-01-17 13:03:25 瀏覽:83
android頂部標題欄 發布:2025-01-17 13:02:28 瀏覽:692