redis的記憶體陷阱

2021-10-14 04:57:31 字數 365 閱讀 8263

redis持久化時記憶體兩倍的問題

redis有rdb和aof兩種持久化方式,rdb容易丟資料,aof由於儲存的歷史,會使得檔案非常非常大,就得啟用rewrite的功能。

所以都會有fork出乙個子程序,有子程序將資料寫入磁碟。

之前有人說子程序會完全copy父程序的記憶體,所以必須讓redis留出一半的記憶體空著才會安全。

其實是不準確的,在進行rdb或者rewrite aof的時候,redis也會利用linux' copy-on-write的思想。簡單來說就是子程序並不會真正copu父程序的記憶體資料,只是在新物件的記憶體對映表中儲存舊資料的指標,只有舊資料有更改,才會把這部分資料copy到新的記憶體空間吧?最終就是在寫snapshot期間被修改的頁面的大小。

strcat的記憶體越界陷阱

一下 段裡,char szplanchange 500 未初始化,會導致在strncat進行字串連線的時候因為沒有在字元陣列範圍內找到字串結束符 0 而出現記憶體操作越界的問題。乙個實際的結果是導致delete pstarttime 的時候失敗,為區域性指標變數pstarttime 的位址已經被st...

ios 記憶體使用陷阱

在iphone開發過程中,中的記憶體洩露我們很容易用記憶體檢測工具leaks 檢測出來,並一一改之,但有些是因為ios 的缺陷和用法上的錯誤,leaks 檢測工具並不能檢測出來,你只會看到大量的記憶體被使用,最後收到didreceivememorywarning,最終導致程式崩潰。以下是開發過程中遇...

iOS記憶體使用陷阱

在iphone開發過程中,中的記憶體洩露我們很容易用記憶體檢測工具laeks檢測出來,並改之,但有些是因為ios的缺陷和用法上的錯誤,leaks檢測工具並不能檢測出來。以下情況需要注意 一 uiimage imagenamed 只適合與ui介面中貼圖的讀取,較大的資源檔案應該盡量避免使用 用uiim...