Runtime監控專案記憶體使用情況
在工作中,有時候需要實時去監控記憶體的使用情況,當然監控java的jvm記憶體的方法有很多,比如:sun的jdk版本1.5和1.6之後中就帶了很多這樣的工具,jstat,jps,jstatd,jmap,jinfo,jconsole等一系列,這些工具基本已經能很好的去完成jvm記憶體,執行緒等監控工作。
我們現在不需要做這麼麻煩的,因為我們只是需要監控專案系統記憶體的監控,這時候就可以用到java.lang.Runtime。。每個java應用程式都有一個runtime類例項,使應用程式能和執行環境相連結,可以通過getRuntime方法獲取當前執行物件,應用程式不能建立自己的 Runtime 類例項。
下來我們來看看Runtime類中提供的一些方法:
void |
addShutdownHook(Thread hook) |
int |
availableProcessors() |
Process |
exec(String command) |
Process |
exec(String[] cmdarray) |
Process |
exec(String[] cmdarray, String[] envp) |
Process |
exec(String[] cmdarray, String[] envp, File dir) |
Process |
exec(String command, String[] envp) |
Process |
exec(String command, String[] envp, File dir) |
void |
exit(int status) |
long |
freeMemory() |
void |
gc() |
InputStream |
getLocalizedInputStream(InputStream in) |
OutputStream |
getLocalizedOutputStream(OutputStream out) |
static Runtime |
getRuntime() |
void |
halt(int status) |
void |
load(String filename) |
void |
loadLibrary(String libname) |
long |
maxMemory() |
boolean |
removeShutdownHook(Thread hook) |
void |
runFinalization() |
static void |
runFinalizersOnExit(boolean value) |
long |
totalMemory() |
void |
traceInstructions(boolean on) |
void |
traceMethodCalls(boolean on) |
以上方法來自於Runtime類api文件,因為Runtime繼承類java.lang.Object,因此也繼承了Object類的一些方法:clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait。
我們現在需要做記憶體監控暫時不需要全部去了解Runtime類的方法,只需要去看錶格中“藍色”標記的方法。
getRuntime
public static Runtime getRuntime(){
Return currentRuntime;
}
返回與當前 Java 應用程式相關的執行時物件。Runtime類的大多數方法是例項方法,並且必須根據當前的執行時物件對其進行呼叫。
返回:
與當前 Java 應用程式相關的 Runtime 物件。
totalMemory
public native long totalMemory();
返回 Java 虛擬機器中的記憶體總量。此方法返回的值可能隨時間的推移而變化,這取決於主機環境。
注意,儲存任意給定型別的一個物件所需的記憶體量可能取決於實現方法。
返回:
目前為當前和後續物件提供的記憶體總量,以位元組為單位。
maxMemory
public native long maxMemory();
返回 Java 虛擬機器試圖使用的最大記憶體量。如果記憶體本身沒有限制,則返回值 Long.MAX_VALUE。
返回:
虛擬機器試圖使用的最大記憶體量,以位元組為單位。
gc
public native void gc();
執行垃圾回收器。呼叫此方法意味著 Java 虛擬機器做了一些努力來回收未用物件,以便能夠快速地重用這些物件當前佔用的記憶體。當控制從方法呼叫中返回時,虛擬機器已經盡最大努力回收了所有丟棄的物件。
名稱 gc 代表“垃圾回收器”。虛擬機器根據需要在單獨的執行緒中自動執行回收過程,甚至不用顯式呼叫 gc 方法。
方法 System.gc() 是呼叫此方法的一種傳統而便捷的方式。
當我們瞭解了以上方法時,就可以動手去實現我們自己的功能了。
//當前JVM佔用的記憶體總數(M)
double total = (Runtime.getRuntime().totalMemory()) / (1024.0 * 1024);
//JVM最大可用記憶體總數(M)
double max = (Runtime.getRuntime().maxMemory()) / (1024.0 * 1024);
//JVM空閒記憶體(M)
double free = (Runtime.getRuntime().freeMemory()) / (1024.0 * 1024);
//可用記憶體記憶體(M)
double mayuse=(max - total + free);
//已經使用記憶體(M)
double used=(total-free);
相關推薦
Runtime監控專案記憶體使用情況
在工作中,有時候需要實時去監控記憶體的使用情況,當然監控java的jvm記憶體的方法有很多,比如:sun的jdk版本1.5和1.6之後中就帶了很多這樣的工具,jstat,jps,jstatd,jmap,jinfo,jconsole等一系列,這些工具基本已經能很好的去完成j
CMake簡介,打包so檔案,編譯實際專案 用valgrind測記憶體情況
開發十年,就只剩下這套架構體系了! >>>
使用prometheus+grafana監控springboot2專案jvm情況
軟體需求: jdk8+ grafana下載地址:https://grafana.com/grafana/download p
python專案實戰:監控電腦網路情況
前言 小編今天為大家介紹一個利用Python監控當前聯網狀態情況的python程式碼,它可以清楚地知道,你的電腦網路是否是連結成
shell腳本-監控網絡情況
腳本 shell 監控網絡並 #!/bin/bash # ------------------------------------------------------------------------------- # FileName: networkchecking # Revisio
Zabbix監控之監控Redis使用情況
51cto pan 百分數 pac num 統計 ase term printf 1、如何獲取redis數據?通過info 去獲取相關所有的數據/usr/local/redis-4.0.11/src/redis-cli -h 192.168.5.149 info獲取內存相關
Linux下實現指令碼監測特定程序佔用記憶體情況
記憶體洩露是C/C++程式設計師經常需要面對的問題,除了有效地經常查找出記憶體洩露的位置外,在嵌入式的開發中,還經常需要確定自己寫的程式是否存在記憶體洩露的情況 Linux系統下,我們可以利用以下命令來獲取特定程序的執行情況: cat /proc/$PID/status 其中
視訊監控專案(含完整程式碼)
功能簡介: 採集端: 1.USB攝像頭採集資料(yuyv格式),通過v4l2 API。 2. 資料格式轉換,yuyv->yuv420p. 3.h264編碼壓縮.通過x264編碼庫 4.資料傳輸(tcp)。
linux檢視jvm實際堆記憶體情況
linux如何檢視jvm實際記憶體情況 解決方法: 1.檢視jvm的pid(下面的8499),執行:jps [[email protected] ~]# jps 8499 Bootstrap 11284 Jps
如何高效跟蹤和監控專案執行?
“一張完美的圖紙,不等於一棟堅實的大樓”,專案執行過程中對專案計劃的有效跟蹤就顯得非常重要,畢竟,專案執行過程中會遇到各種例外突發事件。 首先,跟蹤需要全方位,專案需要跟蹤和監控的內容是全方位的,至少涉及計劃任務、文件交付、風險、關鍵裝置、相關干係人的溝通、專案培訓等,為了落實責任,每個物件都需
shell 指令碼監控系統記憶體佔用率、主備機等
執行結果 shell 指令碼實現 #!/bin/sh ########################################################## #作者:LINU_BW #時間:2016-10-28 #功能:監控伺服器系統IP cpu 記憶體 磁碟 主備&nb
Linux監控磁碟使用情況,當使用率達到90%,自動發郵件
#************************************************************************* # FileName : disk_capacity_alarm.sh #**************
檢視記憶體情況
jinfo:可以輸出並修改執行時的java 程序的opts。 jps:與unix上的ps類似,用來顯示本地的java程序,可以檢視本地執行著幾個java程式,並顯示他們的程序號。 jstat:一個極強的監視VM記憶體工具。可以用來監視VM記憶體內的各種堆和非堆的大小及其記憶體使用量。&
Linux 檢視程序消耗記憶體情況總結
在Linux中,有很多命令或工具檢視記憶體使用情況,今天我們來看看如何檢視程序消耗、佔用的記憶體情況,Linux的記憶體管理和相關概念要比Windows複雜一些。在此之前,我們需要了解一下Linux系統下面有關記憶體的專用名詞和專業術語概念: 實體記憶體和虛擬記
jmap、jstat、jconsole、MemoryAnalyzer等工具檢視java記憶體情況
jmap (linux下特有,也是很常用的一個命令) 觀察執行中的jvm實體記憶體的佔用情況。 引數如下: -heap :列印jvm heap的情況 -histo: 列印jvm heap的直方圖。其輸出資訊包括類名,物件數量,物件佔用大小。
使用Druid監控專案的sql和service
本文提要 前文也提到過druid不僅僅是一個連線池技術,因此在將整合druid到專案中後,這一篇文章將去介紹druid的其他特性和功能,作為一個輔助工具幫助提升專案的效能,本文的重點就是兩個字:監控。 我的github地址點這裡 druid監控 因為已經做了整合,所以這一步
專案管理必備——使用燃盡圖監控專案整體進度
在《跳出任務管理的泥沼,擁抱甘特圖的懷抱》一文中,我談到了使用甘特圖來規劃任務。甘特圖更多的關注每一個任務的進度上。那麼如果我希望瞭解專案整體的進度,應該如何選擇呢?此時就需要引入另一個簡單又強大的工具:燃盡圖(Burn down chart)。 什麼是燃盡圖 假設專案X有5個任務,我們在預估這些任務的時
部署點評Cat監控專案
在專案中監控程式碼執行的狀況,可以採用點評的Cat專案來監控整個專案,但是按照官方的文件來部署cat,總會遇到各種問題,講解的也不夠簡明清楚,現在用一個單機來部署執行cat監控專案。 首先,到專案的g
新增自定義監控專案 配置郵件告警 測試告警 不發郵件的問題處理
1,新增自定義監控專案。 首先到服務端驗證,執行命令 zabbix_get -s 192.168.177.130-p 10050 -k 'my.estab.count‘ 然後在zabbix監控中心(瀏覽器)配置增加監控專案 鍵值寫my.estab.count 新增該專案後,到
新增自定義監控專案
需求:監控某臺web的80埠連線數,並出圖兩步:1)zabbix監控中心建立監控專案;2)針對該監控專案以圖形展現對於第一步,需要到客戶端定義指令碼 vim /usr/local/sbin/estab.sh //內容如下 #路徑和名字都是自定義。#!/bin/bash##獲取80埠併發連線數 netstat