GNU調試器(GNU Debugger, GDB)是一個開源的源代碼級的調試工具,其性能優(yōu)良、功能齊全、易于使用,在嵌入式系統(tǒng)開發(fā)過程中扮演著越來越重要的角色。接下來是我為大家收集的[Linux]gdb查看內存區(qū)命令,希望能幫到大家。
創(chuàng)新互聯(lián)長期為近1000家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為定海企業(yè)提供專業(yè)的網(wǎng)站設計、成都做網(wǎng)站,定海網(wǎng)站改版等技術服務。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
[Linux]gdb查看內存區(qū)命令
用gdb查看內存
格式: x /nfu
說明
x 是 examine 的縮寫
n表示要顯示的內存單元的個數(shù)
f表示顯示方式, 可取如下值
x 按十六進制格式顯示變量。
d 按十進制格式顯示變量。
u 按十進制格式顯示無符號整型。
o 按八進制格式顯示變量。
t 按二進制格式顯示變量。
a 按十六進制格式顯示變量。
i 指令地址格式
c 按字符格式顯示變量。
f 按浮點數(shù)格式顯示變量。
u表示一個地址單元的長度
b表示單字節(jié),
h表示雙字節(jié),
w表示四字節(jié),
g表示八字節(jié)
Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),
t(binary), f(float), a(address), i(instruction), c(char) and s(string).
Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes)
舉例
x/3uh buf
表示從內存地址buf讀取內容,
h表示以雙字節(jié)為一個單位,
3表示三個單位,
u表示按十六進制顯示
例子:
n是個局部變量
Breakpoint 1, main (argc=1, argv=0xbffff3a4) at calc.c:7
7 int n = atoi(argv[1]);
(gdb) print n
$1 = (int *) 0xbffff2ec
(gdb) x 0xbffff2ec
0xbffff2ec: 0x00282ff4
(gdb) print * (int *) 0xbffff2ec
$2 = 2633716
(gdb) x /4xw 0xbffff2ec
0xbffff2ec: 0x00282ff4 0x080484e0 0x00000000 0xbffff378
(gdb) x /4dw 0xbffff2ec
0xbffff2ec: 2633716 134513888 0 -1073745032
(gdb)
看了“[Linux]gdb查看內存區(qū)命令”還想看:
1. Linux使用dmidecode命令查看內存型號
2. Linux下查看CPU型號,內存大小,硬盤空間命令
3. 如何在Linux命令行中查看目錄的大小
4. LINUX 查看硬件配置命令的教程
內存是Linux內核所管理的最重要的資源之一。內存管理系統(tǒng)是操作系統(tǒng)中最為重要的部分,因為系統(tǒng)的物理內存總是少于系統(tǒng)所需要的內存數(shù)量。虛擬內存就是為了克服這個矛盾而采用的策略。系統(tǒng)的虛擬內存通過在各個進程之間共享內存而使系統(tǒng)看起來有多于實際內存的內存容量。Linux支持虛擬內存, 就是使用磁盤作為RAM的擴展,使可用內存相應地有效擴大。核心把當前不用的內存塊存到硬盤,騰出內存給其他目的。當原來的內容又要使用時,再讀回內存。以下就是我為大家整理到的詳細LINUX系統(tǒng)內存管理的知識,歡迎大家閱讀!!!
LINUX系統(tǒng)教程:內存管理的知識詳解
一、內存使用情況監(jiān)測
(1)實時監(jiān)控內存使用情況
在命令行使用“Free”命令可以監(jiān)控內存使用情況
代碼如下:
#free
total used free shared buffers cached
Mem: 256024 192284 63740 0 10676 101004
-/+ buffers/cache: 80604 175420
Swap: 522072 0 522072
上面給出了一個256兆的RAM和512兆交換空間的系統(tǒng)情況。第三行輸出(Mem:)顯示物理內存。total列不顯示核心使用的物理內存(通常大約1MB)。used列顯示被使用的內存總額(第二行不計緩沖)。 free列顯示全部沒使用的內存。Shared列顯示多個進程共享的內存總額。Buffers列顯示磁盤緩存的當前大小。第五行(Swap:)對對換空間,顯示的信息類似上面。如果這行為全0,那么沒使用對換空間。在缺省的狀態(tài)下,free命令以千字節(jié)(也就是1024字節(jié)為單位)來顯示內存使用情況。可以使用—h參數(shù)以字節(jié)為單位顯示內存使用情況,或者可以使用—m參數(shù)以兆字節(jié)為單位顯示內存使用情況。還可以通過—s參數(shù)使用命令來不間斷地監(jiān)視內存使用情況:
#free –b –s2
這個命令將會在終端窗口中連續(xù)不斷地報告內存的使用情況,每2秒鐘更新一次。
(2)組合watch與 free命令用來實時監(jiān)控內存使用情況:
代碼如下:
#watch -n 2 -d free
Every 2.0s: free Fri Jul 6 06:06:12 2007
total used free shared buffers cached
Mem: 233356 218616 14740 0 5560 64784
-/+ buffers/cache: 148272 85084
Swap: 622584 6656 615928
watch命令會每兩秒執(zhí)行 free一次,執(zhí)行前會清除屏幕,在同樣位置顯示數(shù)據(jù)。因為 watch命令不會卷動屏幕,所以適合出長時間的監(jiān)測內存使用率。可以使用 -n選項,控制執(zhí)行的頻率;也可以利用 -d選項,讓命令將每次不同的地方顯示出來。Watch命令會一直執(zhí)行,直到您按下 [Ctrl]-[C] 為止。
二、虛擬內存的概念
(1)Linux虛擬內存實現(xiàn)機制
Linux虛擬內存的實現(xiàn)需要六種機制的支持:地址映射機制、內存分配回收機制、緩存和刷新機制、請求頁機制、交換機制、內存共享機制。
首先內存管理程序通過映射機制把用戶程序的邏輯地址映射到物理地址,在用戶程序運行時如果發(fā)現(xiàn)程序中要用的虛地址沒有對應的物理內存時,就發(fā)出了請求頁要求;如果有空閑的內存可供分配,就請求分配內存(于是用到了內存的分配和回收),并把正在使用的物理頁記錄在緩存中(使用了緩存機制)。 如果沒有足夠的內存可供分配,那么就調用交換機制,騰出一部分內存。另外在地址映射中要通過TLB(翻譯后援存儲器)來尋找物理頁;交換機制中也要用到交換緩存,并且把物理頁內容交換到交換文件中后也要修改頁表來映射文件地址。
(2)虛擬內存容量設定
也許有人告訴你,應該分配2倍于物理內存的虛擬內存,但這是個不固定的規(guī)律。如果你的物理保存比較小,可以這樣設定。如果你有1G物理內存或更多的話,可以縮小一下虛擬內存。Linux會把大量的內存用做Cache的,但在資源緊張時回收回.。你只要看到swap為0或者很小就可以放心了,因為內存放著不用才是最大的浪費。
三、使甩vmstat命令監(jiān)視虛擬內存使用情況
vmstat是Virtual Meomory Statistics(虛擬內存統(tǒng)計)的縮寫,可對操作系統(tǒng)的虛擬內存、進程、CPU活動進行監(jiān)視。它是對系統(tǒng)的整體情況進行統(tǒng)計,不足之處是無法對某個進程進行深入分析。通常使用vmstat 5 5(表示在5秒時間內進行5次采樣)命令測試。將得到一個數(shù)據(jù)匯總它可以反映真正的系統(tǒng)情況。
代碼如下:
#vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 62792 3460 9116 88092 6 30 189 89 1061 569 17 28 54 2
0 0 62792 3400 9124 88092 0 0 0 14 884 434 4 14 81 0
0 0 62792 3400 9132 88092 0 0 0 14 877 424 4 15 81 0
1 0 62792 3400 9140 88092 0 0 0 14 868 418 6 20 74 0
1 0 62792 3400 9148 88092 0 0 0 15 847 400 9 25 67 0
vmstat命令輸出分成六個部分:
(1)進程procs:
r:在運行隊列中等待的進程數(shù) 。
b:在等待io的進程數(shù) 。
(2)內存memoy:
swpd:現(xiàn)時可用的交換內存(單位KB)。
free:空閑的內存(單位KB)。
buff: 緩沖去中的內存數(shù)(單位:KB)。
cache:被用來做為高速緩存的內存數(shù)(單位:KB)。
(3) swap交換頁面
si: 從磁盤交換到內存的交換頁數(shù)量,單位:KB/秒。
so: 從內存交換到磁盤的交換頁數(shù)量,單位:KB/秒。
(4) io塊設備:
bi: 發(fā)送到塊設備的塊數(shù),單位:塊/秒。
bo: 從塊設備接收到的塊數(shù),單位:塊/秒。
(5)system系統(tǒng):
in: 每秒的中斷數(shù),包括時鐘中斷。
cs: 每秒的環(huán)境(上下文)切換次數(shù)。
(6)cpu中央處理器:
cs:用戶進程使用的時間 。以百分比表示。
sy:系統(tǒng)進程使用的時間。 以百分比表示。
id:中央處理器的空閑時間 。以百分比表示。
如果 r經(jīng)常大于 4 ,且id經(jīng)常小于40,表示中央處理器的負荷很重。 如果bi,bo 長期不等于0,表示物理內存容量太小。
四、Linux 服務器的內存泄露和回收內存的方法
1、內存泄漏的定義:
一般我們常說的內存泄漏是指堆內存的泄漏。堆內存是指程序從堆中分配的,大小任意的(內存塊的大小可以在程序運行期決定),使用完后必須顯示釋放的內存。應用程序一般使用malloc,realloc,new等函數(shù)從堆中分配到一塊內存,使用完后,程序必須負責相應的調用free或釋放該內存塊,否則,這塊內存就不能被再次使用,我們就說這塊內存泄漏了。
2、內存泄露的危害
從用戶使用程序的角度來看,內存泄漏本身不會產生什么危害,作為一般的用戶,根本感覺不到內存泄漏的存在。真正有危害的`是內存泄漏的堆積,這會最終消耗盡系統(tǒng)所有的內存。從這個角度來說,一次性內存泄漏并沒有什么危害,因為它不會堆積,而隱式內存泄漏危害性則非常大,因為較之于常發(fā)性和偶發(fā)性內存泄漏它更難被檢測到。存在內存泄漏問題的程序除了會占用更多的內存外,還會使程序的性能急劇下降。對于服務器而言,如果出現(xiàn)這種情況,即使系統(tǒng)不崩潰,也會嚴重影響使用。
3、內存泄露的檢測和回收
對于內存溢出之類的麻煩可能大家在編寫指針比較多的復雜的程序的時候就會遇到。在 Linux 或者 unix 下,C、C++語言是最使用工具。但是我們的 C++ 程序缺乏相應的手段來檢測內存信息,而只能使用 top 指令觀察進程的動態(tài)內存總額。而且程序退出時,我們無法獲知任何內存泄漏信息。
使用kill命令
使用Linux命令回收內存,我們可以使用Ps、Kill兩個命令檢測內存使用情況和進行回收。在使用超級用戶權限時使用命令“Ps”,它會列出所有正在運行的程序名稱,和對應的進程號(PID)。Kill命令的工作原理是:向Linux操作系統(tǒng)的內核送出一個系統(tǒng)操作信號和程序的進程號(PID)。
應用例子:
為了高效率回收內存可以使用命令ps 參數(shù)v:
代碼如下:
[root@www ~]# ps v
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
2542 tty1 Ss+ 0:00 0 8 1627 428 0.1 /sbin/mingetty tty1
2543 tty2 Ss+ 0:00 0 8 1631 428 0.1 /sbin/mingetty tty2
2547 tty3 Ss+ 0:00 0 8 1631 432 0.1 /sbin/mingetty tty3
2548 tty4 Ss+ 0:00 0 8 1627 428 0.1 /sbin/mingetty tty4
2574 tty5 Ss+ 0:00 0 8 1631 432 0.1 /sbin/mingetty tty5
2587 tty6 Ss+ 0:00 0 8 1627 424 0.1 /sbin/mingetty tty6
2657 tty7 Ss+ 1:18 12 1710 29981 7040 3.0 /usr/bin/Xorg :0 -br -a
2670 pts/2 Ss 0:01 2 682 6213 1496 0.6 -bash
3008 pts/4 Ss 0:00 2 682 6221 1472 0.6 /bin/bash
3029 pts/4 S+ 0:00 2 32 1783 548 0.2 ping 192.168.1.12
3030 pts/2 R+ 0:00 2 73 5134 768 0.3 ps v
然后如果想回收Ping命令的內存的話,使用命令:
代碼如下:
# Kill -9 3029
使用工具軟件
Memprof是一個非常具有吸引力且非常易于使用的軟件,它由Red Hat的Owen Talyor創(chuàng)立。這個工具是用于GNOME前端的Boehm-Demers-Weiser垃圾回收器。這個工具直接就可以執(zhí)行,并且其工作起來無需對源代碼進行任何修改。在程序執(zhí)行時,這個工具會以圖形化的方式顯示內存的使用情況。
相關介紹:Linux
嚴格來講,Linux這個詞本身只表示Linux內核,但人們已經(jīng)習慣了用Linux來形容整個基于Linux內核,并且使用GNU 工程各種工具和數(shù)據(jù)庫的操作系統(tǒng)。
Linux擁有以下特性:類似于Unix的基本思想,支持完全免費與自由傳播,完全兼容POSIX1.0標準,支持多用戶、多任務、有著良好的界面、支持多種平臺。Linux 能運行主要的UNIX工具軟件、應用程序和網(wǎng)絡協(xié)議。它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡為核心的設計思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡操作系統(tǒng)。
Linux有著許多不同的版本,但它們都使用了Linux內核。Linux可安裝在各種計算機硬件設備中,比如手機、平板電腦、路由器、視頻游戲控制臺、臺式計算機、大型機和超級計算機。
查看Linux服務器內存
查看Linux服務器下的內存使用情況,可以使用命令free
-m。注意此命令只在Linux下有效,在FreeBSD中沒有此命令。命令如下所示:
查看Linux服務器內存
used:已經(jīng)使用的內存數(shù)
free:空閑的內存數(shù)
shared:多個進程共享的內存總額
-buffers/cache:(已用)的內存數(shù),即used-buffers-cached
+buffers/cache:(可用)的內存數(shù),即free+buffers+cached
得出結論:
可用內存的計算公式為:
可用內存=free+buffers+cached,即2551MB+268MB+917MB=3737MB
linux查看內存使用情況的方法是,1,proc。meminfo,查看 RAM 使用情況最簡單的方法是通過 ,procmeminfo。這個動態(tài)更新的虛擬文件實際上是許多其他內存相關工具 free ,ps ,top的組合顯示。
2,atop。atop 命令是一個終端環(huán)境的監(jiān)控命令。它顯示的是各種系統(tǒng)資源,CPU, memory, network, IOkernel的綜合,并且在高負載的情況下進行了彩色標注。
3,free。free 命令是一個快速查看內存使用情況的方法,它是對 ,proc,meminfo 收集到的信息的一個概述。
4,GNOME System Monitor。GNOME System Monitor 是一個顯示最近一段時間內的 CPU內存交換區(qū)及網(wǎng)絡的使用情況的視圖工具。它還提供了一種查看 CPU 及內存使用情況的方法。
5,htop。htop 命令顯示了每個進程的內存實時使用率。它提供了所有進程的常駐內存大小,程序總內存大小,共享庫大小等的報告,列表可以水平及垂直滾動。6,KDE System Monitor功能同 4 中介紹的 GENOME 版本。
1.在Linux下查看內存:free
2.查看進程
3.實時顯示系統(tǒng)中各個進程的資源占用狀況 top
4.
5.df 用于顯示 Linux 系統(tǒng)的磁盤利用率
6.du 命令
du是用于查找文件和目錄的磁盤使用情況的命令。du 命令在與各種選項一起使用時能以多種格式提供結果。
用 'top -i' 看看有多少進程處于 Running 狀態(tài),可能系統(tǒng)存在內存或 I/O 瓶頸,用 free 看看系統(tǒng)內存使用情況,swap 是否被占用很多,用 iostat 看看 I/O 負載情況...
還有一種辦法是 ps -ef | sort -k7 ,將進程按運行時間排序,看哪個進程消耗的cpu時間最多。
top:
主要參數(shù) :
free
1.作用
free命令用來顯示內存的使用情況,使用權限是所有用戶。
**2.格式 **
**3.主要參數(shù) **
uptime
vmstat
**1 觀察磁盤活動情況 **
磁盤活動情況主要從以下幾個指標了解:
**2 觀察cpu活動情況 **
vmstat比top更能反映出cpu的使用情況:
iostat
用于統(tǒng)計CPU的使用情況及tty設備、硬盤和CD-ROM的I/0量
即使爬到最高的山上,一次也只能腳踏實地地邁一步。
Linux查看CPU和內存使用情況:
在做Linux系統(tǒng)優(yōu)化的時候,物理內存是其中最重要的一方面。自然的,Linux也提供了非常多的方法來監(jiān)控寶貴的內存資源的使用情況。下面的清單詳細的列出了Linux系統(tǒng)下通過視圖工具或命令行來查看內存使用情況的各種方法。
1. /proc/meminfo
查看RAM使用情況最簡單的方法是通過 /proc/meminfo 。這個動態(tài)更新的虛擬文件實際上是許多其他內存相關工具(如:free / ps / top)等的組合顯示。 /proc/meminfo 列出了所有你想了解的內存的使用情況。進程的內存使用信息也可以通過/proc/pid/statm 和 /proc/pid/status 來查看。
atop命令是一個終端環(huán)境的監(jiān)控命令。它顯示的是各種系統(tǒng)資源(CPU, memory, network, I/O, kernel)的綜合,并且在高負載的情況下進行了彩色標注。
free命令是一個快速查看內存使用情況的方法,它是對 /proc/meminfo 收集到的信息的一個概述。
GNOME System Monitor 是一個顯示最近一段時間內的CPU、內存、交換區(qū)及網(wǎng)絡的使用情況的視圖工具。它還提供了一種查看CPU及內存使用情況的方法。
htop命令顯示了每個進程的內存實時使用率。它提供了所有進程的常駐內存大小、程序總內存大小、共享庫大小等的報告。列表可以水平及垂直滾動。
功能同 4 中介紹的GENOME版本。
memstat是一個有效識別executable(s), process(es) and shared libraries使用虛擬內存情況的命令。給定一個進程ID,memstat可以列出這個進程相關的可執(zhí)行文件、數(shù)據(jù)和共享庫。
nmon是一個基于ncurses的系統(tǒng)基準測試工具,它可以監(jiān)控CPU、內存、I/O、文件系統(tǒng)及網(wǎng)絡資源等的互動模式。對于內存的使用,它可以實時的顯示 總/剩余內存、交換空間等信息。
ps命令可以實時的顯示各個進程的內存使用情況。Reported memory usage information includes %MEM (percent of physical memory used), VSZ (total amount of virtual memory used), and RSS (total amount of physical memory used)。你可以使用 “–sort”選項對進程進行排序,例如按RSS進行排序:
smem命令允許你統(tǒng)計基于/proc信息的不同進程和用戶的內存使用情況。內存使用情況的分析可以導出圖表(如條形圖和餅圖)。
top命令提供了實時的運行中的程序的資源使用統(tǒng)計。你可以根據(jù)內存的使用和大小來進行排序。
vmstat命令顯示實時的和平均的統(tǒng)計,覆蓋CPU、內存、I/O等內容。例如內存情況,不僅顯示物理內存,也統(tǒng)計虛擬內存。
標題名稱:linux內存使用命令行 linux內存命令大全方法
網(wǎng)站地址:http://jinyejixie.com/article26/dodoejg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、標簽優(yōu)化、網(wǎng)站設計公司、虛擬主機、App設計、用戶體驗
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)