您好,登錄后才能下訂單哦!
本篇文章為大家展示了監視JSP中JVM可用內存是怎么樣的,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
公司有個JSP項目內存經常溢出,tomcat兩個小時左右就停,我寫了一個類對JVM可用內存進行了監測
import java.util.Timer;
import java.util.TimerTask;
import java.util.Calendar;
import java.util.GregorianCalendar;
/**
Title:GCTimerTask
* @author zhuangyan
* @msn:nacl_zhuang@hotmail.com
* @qq:368924454
* @version 1.0
*/
public class GCTimerTask
extends TimerTask {
private static GCTimerTask instance = null;
public void run() {
Calendar cal = new GregorianCalendar();
int hour24 = cal.get(Calendar.HOUR_OF_DAY); // 0..23
int min = cal.get(Calendar.MINUTE); // 0..59
System.out.print("["+String.valueOf(hour24)+":"+String.valueOf(min)+"]");
System.out.println("JVM可用內存:" + java.lang.Runtime.getRuntime().
freeMemory() / (1024*1024)+"M/"+java.lang.Runtime.getRuntime()
.totalMemory()/(1024*1024)+"M" );System.gc();
}
private void startWork()
{
Timer t = new Timer();
t.schedule(instance,0,1000*60);
}
public static GCTimerTask getInstance()
{
if(instance==null) {
instance = new GCTimerTask();
instance.startWork();
}
return instance;
}
}
這個類雖然簡單,但初學者從中應該學到
1)timer類的用法
2)java.lang.Runtime.getRuntime().freeMemory(),java.lang.Runtime.getRuntime().totalMemory(),System.gc()
這三個方法的使用,需要說明的是System.gc()并不能強迫JVM馬上釋放內存,如果那樣,我的內存溢出問題早就解決了.
3)getInstance()單例模式,
4)***的就是怎么用這個類的問題,我把它放到了EncodingFilter類中,現在很多JSP程序中都有這個類吧
public final void init(final FilterConfig arg0) throws ServletException { GCTimerTask.getInstance(); this.filterConfig = arg0; this.encoding = filterConfig.getInitParameter("encoding"); String value = filterConfig.getInitParameter("ignore"); if (value == null) { this.ignore = true; } else if (value.equalsIgnoreCase("true")) { this.ignore = true; } else if (value.equalsIgnoreCase("yes")) { this.ignore = true; } else { this.ignore = false; } }
JVM可用內存:405M/508M
java.lang.OutOfMemoryError
為什么顯示的JVM可用內存有400多M,還OutOfMemoryError?在window的資源管理器中看tomcat的內存用量是持續增加的,它和 java.lang.Runtime.getRuntime().freeMemory()是什么區別啊?
JSP溢出時在window資源管理器中tomcat內存占300多M,MSSQL內存也差不多到300M了.有什么辦法可以定時重啟這兩個服務呢,我寫了一個程序,在XP下可用.但2000下不能用.
上述內容就是監視JSP中JVM可用內存是怎么樣的,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。