導航:首頁 > 編程系統 > linuxheap命令

linuxheap命令

發布時間:2025-03-22 08:13:13

⑴ 幾種常見的操作tomcat的linux命令

重啟tomcat
ps x 查看pid
kill -9 pid 殺死進程
/app/tomcat/bin/startup.sh 啟動tomcat
追蹤日誌
tail -f /app/tomcat/log/*.log
配置文件
vi /app/tomcat/webapp/root/WEB-INF/server.properties 查看伺服器配置
vi /app/tomcat/webapp/root/WEB-INF/web.xml 查看後端文件位置
vi /app/tomcat/webapp/root/WEB-INF/common-applicationcontext.xml 查看資料庫
查看內存溢出
top 查看系統性能
jmap -heap pid 列印heap的概要信息
jmap -histo pid 列印每個class的實例數目,內存佔用,類全名信息
jmap -mp:format=b,file=heap.bin pid 輸出heap信息到heap.bin文件
jhat -J-mx768m heap.bin 分析heap.bin文件
最好使用eclipse的MAT查看heap.bin,相比jhat等更加直觀,容易發現內存溢出
查看死鎖
jstack -l pid > deadlock.jstack 輸出stack信息到deadlock.jstack
vi deadlock.jstack 使用vi查看
資料庫導出
/usr/local/mysql/bin/mysqlmp -u root -p test > test_new.sql
資料庫導入
/usr/local/mysql/bin/mysql -u root -p test < test_new.sql
選擇性查看日誌
grep * /app/tomcat/log/*.log|cut -d '#' -f 8-9|sort -t '#' -u

⑵ 如何查看unix 的java內存使用情況

jmap (linux下特有,也是很常用的一個命令)
觀察運行中的jvm物理內存的佔用情況。
參數如下:
-heap :列印jvm heap的情況
-histo: 列印jvm heap的直方圖。其輸出信息包括類名,對象數量,對象佔用大小。
-histo:live : 同上,但是只答應存活對象的情況
-permstat: 列印permanent generation heap情況
命令使用:
jmap -heap 3409
可以觀察到New Generation(Eden Space,From Space,To Space),tenured generation,Perm Generation的內存使用情況
輸出內容:
jmap -histo 3409 | jmap -histo:live 3409
可以觀察heap中所有對象的情況(heap中所有生存的對象的情況)。包括對象數量和所佔空間大小。
輸出內容:
寫個腳本,可以很快把佔用heap最大的對象找出來,對付內存泄漏特別有效。
如果結果很多,可以用以下命令輸出到文本文件。
jmap -histo 3409 | jmap -histo:live 3409 > a.txt
jinfo:可以輸出並修改運行時的java 進程的opts。
jps:與unix上的ps類似,用來顯示本地的java進程,可以查看本地運行著幾個java程序,並顯示他們的進程號。
jstat:一個極強的監視VM內存工具。可以用來監視VM內存內的各種堆和非堆的大小及其內存使用量。
jmap:列印出某個java進程(使用pid)內存內的所有'對象'的情況(如:產生那些對象,及其數量)。
jconsole:一個java GUI監視工具,可以以圖表化的形式顯示各種數據。並可通過遠程連接監視遠程的伺服器VM。
詳細:在使用這些工具前,先用JPS命令獲取當前的每個JVM進程號,然後選擇要查看的JVM。
jstat工具特別強大,有眾多的可選項,詳細查看堆內各個部分的使用量,以及載入類的數量。使用時,需加上查看進程的進程id,和所選參數。以下詳細介紹各個參數的意義。
jstat -class pid:顯示載入class的數量,及所佔空間等信息。
jstat -compiler pid:顯示VM實時編譯的數量等信息。
jstat -gc pid:可以顯示gc的信息,查看gc的次數,及時間。其中最後五項,分別是young gc的次數,young gc的時間,full gc的次數,full gc的時間,gc的總時間。
jstat -gccapacity:可以顯示,VM內存中三代(young,old,perm)對象的使用和佔用大小,如:PGCMN顯示的是最小perm的內存使用量,PGCMX顯示的是perm的內存最大使用量,PGC是當前新生成的perm內存佔用量,PC是但前perm內存佔用量。其他的可以根據這個類推, OC是old內純的佔用量。
jstat -gcnew pid:new對象的信息。
jstat -gcnewcapacity pid:new對象的信息及其佔用量。
jstat -gcold pid:old對象的信息。
jstat -gcoldcapacity pid:old對象的信息及其佔用量。
jstat -gcpermcapacity pid: perm對象的信息及其佔用量。
jstat -util pid:統計gc信息統計。
jstat -printcompilation pid:當前VM執行的信息。
除了以上一個參數外,還可以同時加上 兩個數字,如:jstat -printcompilation 3024 250 6是每250毫秒列印一次,一共列印6次,還可以加上-h3每三行顯示一下標題。
jmap是一個可以輸出所有內存中對象的工具,甚至可以將VM 中的heap,以二進制輸出成文本。
命令:jmap -mp:format=b,file=heap.bin
file:保存路徑及文件名
pid:進程編號
?jmap -histo:live pid| less :堆中活動的對象以及大小
?jmap -heap pid : 查看堆的使用狀況信息
jinfo:的用處比較簡單,就是能輸出並修改運行時的java進程的運行參數。用法是jinfo -opt pid 如:查看2788的MaxPerm大小可以用 jinfo -flag MaxPermSize 2788。
jconsole是一個用java寫的GUI程序,用來監控VM,並可監控遠程的VM,非常易用,而且功能非常強。使用方法:命令行里打 jconsole,選則進程就可以了。
JConsole中關於內存分區的說明。
Eden Space (heap): 內存最初從這個線程池分配給大部分對象。
Survivor Space (heap):用於保存在eden space內存池中經過垃圾回收後沒有被回收的對象。
Tenured Generation (heap):用於保持已經在 survivor space內存池中存在了一段時間的對象。
Permanent Generation (non-heap): 保存虛擬機自己的靜態(refective)數據,例如類(class)和方法(method)對象。Java虛擬機共享這些類數據。這個區域被分割為只讀的和只寫的,
Code Cache (non-heap):HotSpot Java虛擬機包括一個用於編譯和保存本地代碼(native code)的內存,叫做「代碼緩存區」(code cache)
?jstack ( 查看jvm線程運行狀態,是否有死鎖現象等等信息) : jstack pid : thread mp
?jstat -gcutil pid 1000 100 : 1000ms統計一次gc情況統計100次;
另外推薦一款查看jmap mp 的內存對象工具 MemoryAnalyzer

⑶ crateDB搭建與集群部署

欲搭建並部署集群式的 CrateDB 資料庫,需遵循以下步驟。首先,訪問 CrateDB 官網下載 Linux 版本的資料庫文件,通過解壓命令進行部署。創建並為 crate 用戶賦予許可權,確保其具有執行所有操作的許可權,並為執行文件與目錄分配適當的許可權。

對於 Linux 環境,運行 CrateDB 的命令為 `./crate-4.2.2/bin/crate`。在 Windows 環境下,解壓文件後,直接在解壓目錄下,如 `D:\crate-4.2.1\bin` 執行 `crate` 命令即可。

在部署過程中,可能遇到的常見問題包括:沒有切換用戶、沒有賦予文件/文件夾許可權以及系統限制導致的錯誤。對於系統限制的問題,例如 `vm.max_map_count` 的值過低,需通過編輯 `/etc/sysctl.conf` 文件並添加 `vm.max_map_count = 262144` 來解決,或使用 `sysctl -w` 命令來調整配置。如果遇到找不到 `sysctl` 命令的問題,切換到 root 用戶並使用 `/sbin/sysctl -p` 來解決問題。

另一個常見的問題是初始堆大小與最大堆大小不匹配,這可能引起運行時的暫停和內存鎖定的限制。解決方法是通過環境變數 `CRATE_HEAP_SIZE=2g` 來調整堆大小,或在相關配置文件中修改 `CRATE_MIN_MEM=2g`。

為了實現 CrateDB 的集群部署,需要在配置文件 `crate.yml` 中定義集群的節點信息。將 `discovery.seed_hosts` 設置為所有集群節點的 IP 地址,例如 `192.168.6.98:4300`, `192.168.6.100:4300`, `192.168.6.139:4300` 等。同時,確保 `cluster.initial_master_nodes` 列表與 `node.name`, `node.master`, `node.data`, `network.bind_host`, `network.publish_host`, `gateway.recover_after_nodes` 和 `gateway.expected_nodes` 等參數正確配置。最後,保存配置文件並重啟集群中的所有伺服器上的 CrateDB 服務。

成功部署後,打開任一台伺服器的 `localhost:4200` 頁面,應能看到集群狀態的顯示,這表明集群部署已完成。

⑷ 詳解進程的虛擬內存,物理內存,共享內存

在 Linux 環境下編寫程序時,分析進程佔用的內存情況是常見任務之一。通過 top 命令可以查看進程佔用的內存狀態,涉及 VIRT、RES 和 SHR 等關鍵指標。本文將深入探討虛擬內存、駐留內存的概念,以及 top 命令中 VIRT、RES 和 SHR 的實際意義。

虛擬內存與駐留內存是理解內存使用的關鍵概念。虛擬內存是在邏輯上設計的一個內存空間,為程序在運行時提供可訪問的地址空間。它不同於物理內存,因為虛擬內存空間通常遠大於實際可用的物理內存。虛擬內存通過頁映射機制將程序運行過程中需要訪問的虛擬地址映射到物理內存空間上。

駐留內存是進程實際佔用的物理內存,它是虛擬內存空間中映射到物理內存的那部分。RES(Resident Set Size)參數表示駐留內存的大小,而 VIRT(Virtual Memory Size)則表示進程虛擬內存空間的大小。SHR(Shared Memory)代表進程共享內存的大小,即多個進程共享的內存部分。

在深入分析內存使用時,top 命令提供的信息有限,無法詳細了解物理內存的使用情況。為解決這一問題,Linux 系統提供了 smaps 文件,它是每個進程的獨立文件,記錄了進程的虛擬內存使用詳情,如 mmap 文件的佔用空間、動態內存的開辟情況等。

smaps 文件中的每一條記錄對應進程虛擬內存空間中的一塊連續區域,詳細記錄了該區域的地址范圍、許可權、映射文件偏移等信息。通過分析 smaps 文件,可以獲取進程虛擬內存空間的分布情況,包括 heap、文件映射、stack 等的佔用情況,以及進程是否有交換到 swap 空間、內存的臟頁狀態等詳細信息。

綜上所述,理解虛擬內存與駐留內存的概念,掌握 top 命令輸出中的 VIRT、RES 和 SHR 參數含義,以及利用 smaps 文件深入分析進程內存使用情況,對於優化程序性能、定位內存瓶頸至關重要。

閱讀全文

與linuxheap命令相關的資料

熱點內容
word表格中無字 瀏覽:946
多閃app怎麼用照片做表情包 瀏覽:372
如何讓網站內容豐富 瀏覽:348
運輸組織與管理項目式教程 瀏覽:925
vba文件夾所有文件 瀏覽:226
郵件一個pdf文件發不出去 瀏覽:914
三星平板電腦跟蘋果比 瀏覽:482
javawebsocket伺服器 瀏覽:573
安卓存儲測試工具 瀏覽:415
linuxmmap64 瀏覽:531
rapidweaver教程 瀏覽:370
iphone5sape格式 瀏覽:710
win7無法找到網路路徑 瀏覽:267
網路聊天如何搭訕 瀏覽:855
太陽神三國殺所有版本 瀏覽:720
買文件欄文件框得力和晨光哪個好 瀏覽:203
win7裡面的畫圖工具 瀏覽:326
ansys如何生成許可文件 瀏覽:447
聯想筆記本刷bios教程 瀏覽:564
火瑩視頻的文件夾 瀏覽:197

友情鏈接