導航:首頁 > 編程語言 > linux查看java內存

linux查看java內存

發布時間:2023-05-28 00:27:29

⑴ 如何查看linuxjava實例消耗內存

mpstat -P ALL 和 sar -P ALL

說明:sar -P ALL > aaa.txt 重定向輸出內容到文件 aaa.txt

top命令經常用來監控linux的系統狀況,比如cpu、內存的使用,程序員基本都知道這個命令,但比較奇怪的是能用好它的人卻很少,例如top監控視圖中內存數值的運談含義就有不少的曲解.下面幾種方法都可以插件Java實例消耗的內存.

  1. top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況,類似於Windows的任務管理器

內容解釋:

PID:進程的ID
USER:進程所有者
PR:進程的優先順序別,越小越優先被執行
NInice:值
VIRT:進程佔用的虛擬內存
RES:進程佔用的物理內存
SHR:進程使用的共享內存
S:進程的狀態。S表示休眠,R表示正在運行,Z表示旁模碰僵死狀態,N表示該進程優先值為負數
%CPU:進程佔用CPU的使用率
%MEM:進程使用的物理內存和總內存的百分比
TIME+:該進程啟動後佔用的總的CPU時間,即佔用CPU使用時間的累加值。
COMMAND:進程啟動命令名稱

常用的命令:

P:按%CPU使用率排行
T:按MITE+排行
M:按%MEM排行

2、便捷的進程內存查看:/proc/pid ,不過比較難理解

測量一個進程佔用了多少內存,linux為我們提供了一個很方便的方法,/proc目錄為我們提供了所有的信息

說明:

/proc/N pid為N的進程信息
/proc/N/cmdline 進程啟動命令
/proc/N/cwd 鏈接到進程當前工作目錄
/proc/N/environ 進程環境變數列表
/proc/N/exe 鏈接到進程的執行命令文件
/proc/N/fd 包含進程相關的所有的文件描述符
/proc/N/maps 與進程相關的內存映射信息
/proc/N/mem 指代進程持有的內存,不可讀
/proc/N/root 鏈接到進程的根目錄
/proc/N/stat 進程的狀態
/proc/N/statm 進程使用的內存的狀態
/proc/N/status 進程狀態信息碼瞎,比stat/statm更具可讀性
/proc/self 鏈接到當前正在運行的進程

3、可以看到進程中每個資源都佔用了多少內存:pmap

pmap命令可以顯示一個或多個進程所使用的內存數量。你可以使用這個工具來了解伺服器上的某個進程分配了多少內存,並以此來判斷這是否是導致內存瓶頸的原因。要得到更加詳細的信息,使用pmap -d選項。

4、free

free: invalid option -- h

usage: free [-b|-k|-m|-g] [-l] [-o] [-t] [-s delay] [-c count] [-V]

-b,-k,-m,-g show output in bytes, KB, MB, or GB

-l show detailed low and high memory statistics

-o use old format (no -/+buffers/cache line)

-t display total for RAM + swap

-s update every [delay] seconds

-c update [count] times

-V display version information and exit

⑵ 怎麼用linux命令查看jvm進程有幾個線程

在LINUX上可以使用kill -3 pid > thread.info來取得當前JVM線程的信息;
jstack 這個是用來查看jvm當前的thread mp的。可以看到當前Jvm裡面的線程狀況。
這個對於查找blocked線程比較有意義;

⑶ Java程序在linux系統下運行,為什麼會佔用很多虛擬內存

RSS列 表示, 程序佔用了多少物理內存。 虛擬內存可以不用考慮,它並不佔用實際物理內存。 (2). top 命令也可以 其中VIRT(或VSS)列 表示,程序佔用了多少虛擬內存。 同 ps aux 中的 VSZ列 RES列 表示, 程序佔用了多少物理內存。同 ps aux 中的RSS列 2.在linux下, 查看當前系統佔用了多少內存, 一般的命令是 free其中, free就是系統還有多少內存可以使用。但由於 linux 系統對內存使用有一個原則, 就是, 內存是寶貴的, 能使用多少就使用多少。 所以, linux會把已經調用過的包緩存起來,放在內存里。這樣,實際上,可以使用的內存,就可以理解為, free+buffers+cached3.當你了解完這些命令以後, 再去使用ps aux 命令去查看的時候, 會發現一個奇怪的現象。 所有的 RSS 列的數據,加起來, 比物理內存的數要大很多。 比如, 物理內存為2G, 而RSS列的數據加起來,可能有5個G之多, 這是怎麼回事了? 這是因為RSS列的值騙了我們。 linux的內存機制是這樣的: 在運行一個程序時, linux會調用該程序依賴的鏈接庫, 如lib.xx.so。 首先看該鏈接庫是否被映射進內存中,如果沒有被映射,則將代碼段與數據段映射到內存中,否則只是將其加入進程的地址空間。 這樣,當N個程序,依賴到lib.xx.so的時候, 實際上,內存中只有一個lib.xx.so ,而不是N個。 而RSS在顯示一個程序佔用的實際物理內存時, 將lib.xx.so也算了進來。 比如, X程序, 本身佔用內存為5M, lib.xx.so 佔用內存2M,lib.xx.so被N個程序共享依賴。 則RSS顯示為,X程序運行,佔用內存為7M。 實際上, X程序佔用了5M空間。 多餘的2m被討入到RSS中了。 當你在用ps aux顯示內存佔用情況時, N個共享依賴lib.xx.so的N個程序,都把這2m空間,算在自己的RSS中了, 這樣RSS的sum值,就比實際物理內存多了。 當然, linux的內存使用機制很復雜, 不是一句兩句能說清楚的。這里只是簡單的說明了一下, ps aux中的RSS值, 並不能真實反映物理內存的使用情況。 4. 如果查看更詳細的內存使用情況, 可用以下幾種方法, 或者幾種方法結合使用:這幾種方法,都需要root賬戶的許可權(1). pmap -d $pid $pid 是正在運行的程序的pid(2). cat /proc/$pid/smaps smaps的數據比較詳細,可簡單的歸納一下,歸納的命令如下: cat /proc/$pid/smaps awk '//{val_name=gensub(/([a-zA-Z_]*).*/,"\\1",1,$1); list[val_name]+=$2; }END{for(val in list)print val,list[val];}' (3). cat /proc/$pid/maps(4). cat /proc/$pid/statm輸出解釋第一列 size:任務虛擬地址空間大小 第二列 Resident:正在使用的物理內存大小 第三列 Shared:共享頁數 第四列 Trs:程序所擁有的可執行虛擬內存大小 第五列 Lrs:被映像倒任務的虛擬內存空間的庫的大小 第六列 Drs:程序數據段和用戶態的棧的大小 第七列 dt:臟頁數量(5). vmstat這個命令據說也可以提供一些參考信息,具體還未研究 5.作為phper,嘗試過使用php的函數memory_get_usage(), 該函數也不能得到php當前運行的程序,實際的,真正佔用的內存數量。 如果真想得到,php真正佔用的內存, 大概只能在, 程序運行的開始,執行一次memory_get_usage(). 在程序運行結束,執行一次memory_get_usage()。 將兩者的值相減,得到的值, 應該是一個相對比較准確的,內存佔用數量了。 這個方法還沒有測試, 考慮到, 得到這個數量,也沒有實際意義, 加上平時又比較忙,懶得試了。

⑷ Linux伺服器運行的java內存問題,怎麼解決

VM內存設置小了 或者一次性讀的數據過大 例如list vertor 一、內存溢出類型 1、java.lang.OutOfMemoryError: PermGen space JVM管理兩種類型的內存,堆和非堆。堆是給開發人員用的上面說的就是,是在JVM啟動時創建;非堆是留給JVM自己用的,用來存放類的信息的。它和堆不同,運行期內GC不會釋放空間。如果web app用了大量的第三方jar或者應用有太多的class文件而恰好MaxPermSize設置較小,超出了也會導致這塊內存的佔用過多造成溢出,或者tomcat熱部署時侯不會清理前面載入的環境,只會將context更改為新部署的,非堆存的內容就會越來越多。 PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域,這塊內存主要是被JVM存放Class和Meta信息的,Class在被Loader時就會被放到...

⑸ 如何查看當前linux系統給JVM分配了多大的內存

以WAS為例:

[tmp]$ ps -ef | grep java
root 9787 1 0 Sep17 ? 00:02:48 /opt/IBM/WebSphere/AppServer/java/bin/java -Xms50m -Xmx256m

-Xms 和 -Xmx 分別代表分配JVM的最小內存和最大內存。

堆棧信息你可以用 kill -3 後面跟上java進程的pid,這樣就能生成 thread mp 了。

具體如下:

1、簡介C語言是一門通埋租用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器閉基、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。

2、基本介紹

C語言,是一種通用的、過程式的編程語言,廣泛用於系統與應用軟體的開發。具有高效、靈活、功能豐富、表達力強和較高的移植性等特點,在程序員中備受青睞。最近25年是使用最為廣泛的編程語言。

3、運算

C語言的運算非常靈活,功能十分豐富,運算種類遠多於其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。在學習中,對此合理進行分類,找出它們與數轎液謹學中所學到運算之間的不同點之後,記住這些運算也就不困難了,有些運算符在理解後更會牢記心中,將來用起來得心應手,而有些可暫時放棄不記,等用到時再記不遲。

閱讀全文

與linux查看java內存相關的資料

熱點內容
騰訊游戲安卓怎麼用ios登錄 瀏覽:759
石獅雲存儲伺服器 瀏覽:180
python滲透入門到精通 瀏覽:272
如何真機調試安卓進程 瀏覽:739
農行app怎麼交公共維修基金 瀏覽:667
python中字典增加元素 瀏覽:240
伺服器端渲染的數據怎麼爬 瀏覽:163
壓縮空氣噴射器 瀏覽:488
python提高效率 瀏覽:796
華為文件管理怎麼樣輸入解壓碼 瀏覽:800
深思加密狗初始化 瀏覽:566
黃金崩潰pdf 瀏覽:310
華為特定簡訊息加密 瀏覽:375
微機原理與單片機技術李精華答案 瀏覽:816
pic12c508單片機 瀏覽:309
androidgps調用 瀏覽:226
金文編pdf 瀏覽:445
14乘87減147的簡便演算法 瀏覽:473
怎麼創建edu文件夾 瀏覽:723
演算法的基礎問題 瀏覽:256