原创 Linux性能調優--內存套路篇

總結一些解決內存問題,優化內存的一些思路 1 內存性能指標 系統內存使用情況 已用內存和剩餘內存很容易理解,就是已經使用和還未使用的內存。 共享內存是通過 tmpfs 實現的,所以它的大小也就是 tmpfs 使用的內存大小。tmp

原创 Linux性能調優--Swap變高

上一篇總結了內存泄漏。 那麼當發生了內存泄漏時,或者運行了大內存的應用程序,導致系統的內存資源緊張時,系統會如何應對呢? 會導致兩種可能結果,內存回收和 OOM 殺死進程 OOM指的是系統殺死佔用大量內存的進程,釋放這些內存,再分

原创 cocos2dx3.1 texturepacker播放動畫

先使用texturepacker把所需要使用的幀動畫打包成一張圖片和一個plist文件。使用大圖的好處就是可以一次性載入圖片,然後通過plist文件確定圖片的位置,在內存中尋找圖片數據,這就減少了I/O操作,使效率大大提高。但是相對來說圖

原创 LInux性能優化--內存(buffer 和 cache的區別)

當使用free工具輸出的時候: 大部分指標都比較容易理解,但 Buffer 和 Cache 可能不太好區分。從字面上來說,Buffer 是緩衝區,而 Cache 是緩存,兩者都是數據在內存中的臨時存儲。 不知道的情況,就查文檔手

原创 LINUX性能優化--利用緩存提升性能

在內存基礎篇講了一個概念就是存儲層次的概念,內存肯定是硬盤的存儲速度快。 然後上文也得出了一個結論: Buffer 和 Cache 分別緩存的是對磁盤和文件系統的讀寫數據。 1 從寫的角度來說,不僅可以優化磁盤和文件的寫入,對應用

原创 LINUX性能調優---內存(內存泄漏)

當進程通過 malloc() 申請虛擬內存後,系統並不會立即爲其分配物理內存,而是在首次訪問時,才通過缺頁異常陷入內核中分配內存。 爲了協調 CPU 與磁盤間的性能差異,Linux 還會使用 Cache 和 Buffer ,分別把

原创 strace跟蹤go讀取文件函數

strace 是跟蹤系統調用的工具,通過跟蹤代碼發現go語言的read函數是通過彙編函數實現的,所以用strace沒有發現有系統調用。。。。

原创 LINUX性能優化--cpu案例1

上面一篇總結了CPU的使用率,平均負載和上下文切換。 這一篇來一個實際的案例。 安裝環境 兩臺ubuntu18.04虛擬機,配置爲8核16G 其中一臺安裝好docker,執行命令 1 sudo docker build --tag

原创 LInux性能優化--內存(1基礎篇幅)

平常買電腦的時候都會關注一個指標–內存。 內存的作用是什麼呢? 平常我們使用的程序都是安裝的硬盤上的,CPU要運行程序必須要先載入到內存裏面。這是因爲CPU的速度是遠遠高於硬盤的存取速度,爲了效率使用了內存,存儲層次架構如下圖:

原创 C++釋放內存的問題

在完成某一個遊戲的架構的時候,在釋放內存的時候,忽律了一個問題,那就是如果類中存在有指針成員函數的時候,應該要先釋放指針成員函數,然後在釋放整個類的實例,才能保證內存不會泄露和可能出現的野指針問題。。寫下來防止以後在次出現這種低級錯誤。。

原创 cocos3.1源碼分析(1)-------cocos的啓動分析(Win32平臺)

先把上一篇忘記分析的autorelease說一下,在CCDirector.cpp的主循環有 void DisplayLinkDirector::mainLoop() {     if (_purgeDirectorInNextLoop)

原创 談一談計算機網絡---網絡分層

教科書,老師,網絡上的文章往往對網絡分層有個不恰當的比喻,“爲什麼網絡要分層呀?因爲不同的層次之間有不同的溝通方式,這個叫作協議。例如,一家公司也是分“層次”的,分總經理、經理、組長、員工。總經理之間有他們的溝通方式,經理和經理之

原创 談一談計算機網絡---漫談網絡協議

人類簡史這本書說過“十萬年前,地球上至少有六種不同的人,但今日,世界舞臺爲什麼只剩下了我們自己?“ 十萬年前,六種人中智人是最弱的一種,如今只剩下我們自己,靠的就是很好地溝通、交流、協作能力,即認知革命,這是人類發展的一大進步。

原创 C++11 線程庫(高層接口)

如今的CPU是朝着多核發展,在移動端的表現也是如此,4核甚至是8核CPU的手機都出來了。所以線程的作用就能充分利用多核的優勢,充分發掘手機的性能。 C++11也順應時代的潮流,在STL庫中增加了線程庫。但使用線程也會帶來一些問題。那就是不

原创 cocos3.1內存管理的一點理解

從cocos的CCNode.h的可以看出Node是繼承與Ref,首先我們先看CCRef.h文件,如下: //CCRef.h #include "base/CCPlatformMacros.h" #include "base/ccConfi