新聞中心
java寫一個(gè)監(jiān)控器,每月1號(hào)一點(diǎn)掃描一次,注意每月只掃描一次,考慮效率問題和資源問題!!!求大俠啊??!
不想寫代碼了,給你一個(gè)我寫過的參考吧,我的這個(gè)是每天晚上0點(diǎn)時(shí)執(zhí)行程序,一天只執(zhí)行一次,效率認(rèn)為還不錯(cuò)。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),增城企業(yè)網(wǎng)站建設(shè),增城品牌網(wǎng)站建設(shè),網(wǎng)站定制,增城網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,增城網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
package prepare;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Auto_Prepare extends Thread {
// SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");// 格式化日期
// SimpleDateFormat sdfTime = new SimpleDateFormat("HH:mm:ss");// 格式化時(shí)間
SimpleDateFormat sdfTime_ALL = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化時(shí)間
public Auto_Prepare() {
}
public void run() {
// TODO Auto-generated method stub
int way = 1;// 選擇的方法
System.out.println("選擇的方法是:方法" + way);
if (way == 1) {// 用Thread.Sleep()方法實(shí)現(xiàn)
while (true) {
int ON_RestTime = 20;// 如果進(jìn)行了準(zhǔn)備工作,線程的睡眠時(shí)間,單位:小時(shí)
int OFF_RestTime = 59;// 如果不進(jìn)行準(zhǔn)備工作,線程的睡眠時(shí)間,單位:分鐘
// /////////////////////////////////////////////////////////////格式化時(shí)間
Calendar Now = Calendar.getInstance();
String strTime = "現(xiàn)在時(shí)刻北京時(shí)間:"
+ sdfTime_ALL.format(Now.getTime()) + "----";
if (Now.get(Calendar.HOUR_OF_DAY) == 0) {
// 即當(dāng)時(shí)間是0點(diǎn)時(shí),開始執(zhí)行下列語句
System.out.println("abcdefghijklmnopqrstuvwxyz");
System.out.println("Auto_Prepare.java====" + strTime
+ "開始準(zhǔn)備所有數(shù)據(jù)...");
Date SHDate = Now.getTime();// 執(zhí)行準(zhǔn)備工作前的時(shí)間
PrepareData(Now);// 執(zhí)行準(zhǔn)備工作
Now = Calendar.getInstance();// 現(xiàn)在的時(shí)間
long RunTime = Now.getTime().getTime() - SHDate.getTime();// 準(zhǔn)備數(shù)據(jù)消耗的時(shí)間
int hr = (int) RunTime / 1000 / 60 / 60;
int mr = (int) RunTime / 1000 / 60 - hr * 60;
int sr = (int) RunTime / 1000 - hr * 60 * 60 - mr * 60;
System.out.println("Auto_Prepare.java====現(xiàn)在時(shí)刻北京時(shí)間:"
+ sdfTime_ALL.format(Now.getTime())
+ "----準(zhǔn)備工作運(yùn)行時(shí)間為:" + hr + "小時(shí)" + mr + "分" + sr
+ "秒。");
Now = Calendar.getInstance();// 現(xiàn)在的時(shí)間
long SleepTime = ON_RestTime * 60 * 60 * 1000
+ (24 - ON_RestTime) * (60 - OFF_RestTime) * 60
* 1000 - RunTime;
// 加(24-ON_RestTime)*(60-OFF_RestTime)分鐘的目的
// 是消除一天中有四次睡眠OFF_RestTime分鐘造成的誤差。
int hs = (int) SleepTime / 1000 / 60 / 60;
int ms = (int) SleepTime / 1000 / 60 - hs * 60;
int ss = (int) SleepTime / 1000 - hs * 60 * 60 - ms * 60;
System.out.println("Auto_Prepare.java====現(xiàn)在時(shí)刻北京時(shí)間:"
+ sdfTime_ALL.format(Now.getTime())
+ "----所有數(shù)據(jù)準(zhǔn)備完畢,線程睡眠:" + hs + "小時(shí)" + ms + "分" + ss
+ "秒。");
try {
Auto_Prepare.sleep(SleepTime);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {// 不是0點(diǎn),睡眠OFF_RestTime分鐘
Date SHDate = Now.getTime();
Now = Calendar.getInstance();
long RunTime = Now.getTime().getTime() - SHDate.getTime();// 程序運(yùn)行消耗的時(shí)間
int hr = (int) RunTime / 1000 / 60 / 60;
int mr = (int) RunTime / 1000 / 60 - hr * 60;
int sr = (int) RunTime / 1000 - hr * 60 * 60 - mr * 60;
System.out
.println("Auto_Prepare.java====現(xiàn)在時(shí)刻北京時(shí)間:"
+ sdfTime_ALL.format(Now.getTime())
+ "----程序運(yùn)行時(shí)間為:" + hr + "小時(shí)" + mr + "分"
+ sr + "秒。");
Now = Calendar.getInstance();// 現(xiàn)在的時(shí)間
long SleepTime = OFF_RestTime * 60 * 1000 - RunTime;
int hs = (int) SleepTime / 1000 / 60 / 60;
int ms = (int) SleepTime / 1000 / 60 - hs * 60;
int ss = (int) SleepTime / 1000 - hs * 60 * 60 - ms * 60;
System.out.println("Auto_Prepare.java====現(xiàn)在時(shí)刻北京時(shí)間:"
+ sdfTime_ALL.format(Now.getTime())
+ "----時(shí)間不是0點(diǎn),不做準(zhǔn)備工作,線程睡眠:" + hs + "小時(shí)" + ms + "分"
+ ss + "秒。");
try {
Auto_Prepare.sleep(SleepTime);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}// while(true)
} else if (way == 2) {
}
}
private void PrepareData(Calendar now) {
//準(zhǔn)備工作,即你需要讓程序處理的事情
}
}
怎么使用Java來監(jiān)控內(nèi)存?求具體實(shí)例代碼。
其實(shí)首先你可以先使用監(jiān)控內(nèi)存工具,來監(jiān)控下,如果內(nèi)存消耗不是很大,其實(shí)就不用那么麻煩了。如果實(shí)在要加個(gè)內(nèi)存監(jiān)控程序,可以使用Runtime中的MaxMemory、TotalMemory、FreeMemory來實(shí)現(xiàn)。注意這些都是JVM的內(nèi)存,請(qǐng)不要和系統(tǒng)的內(nèi)存混淆。另外如果要實(shí)時(shí)監(jiān)控,必須還得弄個(gè)線程類。大致思路是這樣,至于內(nèi)存溢出,你可以設(shè)定一個(gè)內(nèi)存閾值,比如說15%的剩余內(nèi)存設(shè)置,就報(bào)內(nèi)存即將溢出的錯(cuò)誤。
如何用java實(shí)現(xiàn)web服務(wù)器的監(jiān)控
Hyperic HQ集成了強(qiáng)大的監(jiān)測和管理功能,它有開源版本,您可以直接使用它用來對(duì)web服務(wù)器進(jìn)行監(jiān)控。
如果您想自己寫代碼實(shí)現(xiàn),Hyperic HQ提供了一個(gè)服務(wù)器各種性能指標(biāo)采集的API,這個(gè)API包本身提供了各種平臺(tái)(linux/MAC/window等)的兼容。
如何用java代碼來監(jiān)控系統(tǒng)內(nèi)存·cpu·線程占用情況,并生成日志
可以學(xué)習(xí)軟件包 java.lang.management
提供管理接口,用于監(jiān)視和管理 Java 虛擬機(jī)以及 Java 虛擬機(jī)在其上運(yùn)行的操作系統(tǒng)。
ClassLoadingMXBean
用于 Java 虛擬機(jī)的類加載系統(tǒng)的管理接口。
CompilationMXBean
用于 Java 虛擬機(jī)的編譯系統(tǒng)的管理接口。
GarbageCollectorMXBean
用于 Java 虛擬機(jī)的垃圾回收的管理接口。
MemoryManagerMXBean
內(nèi)存管理器的管理接口。
MemoryMXBean
Java 虛擬機(jī)內(nèi)存系統(tǒng)的管理接口。
MemoryPoolMXBean
內(nèi)存池的管理接口。
OperatingSystemMXBean
用于操作系統(tǒng)的管理接口,Java 虛擬機(jī)在此操作系統(tǒng)上運(yùn)行。
RuntimeMXBean
Java 虛擬機(jī)的運(yùn)行時(shí)系統(tǒng)的管理接口。
ThreadMXBean
Java 虛擬機(jī)線程系統(tǒng)的管理接口。
更多請(qǐng)?jiān)L問(bug315)
當(dāng)前名稱:java外部類監(jiān)控器代碼,Java監(jiān)控
轉(zhuǎn)載來于:http://www.dlmjj.cn/article/hdjcoc.html