zoukankan      html  css  js  c++  java
  • jvm 内存监控2

    引用:http://www.189works.com/article-75562-1.html

    一个类对JVM可用内存进行了监测

    1. import java.util.Timer;   
    2. import java.util.TimerTask;   
    3. import java.util.Calendar;   
    4. import java.util.GregorianCalendar;   
    5. /**    
    6. Title:GCTimerTask   
    7. * @author zhuangyan   
    8. * @msn:nacl_zhuang@hotmail.com   
    9. * @qq:368924454   
    10. * @version 1.0   
    11. */   
    12. public class GCTimerTask   
    13. extends TimerTask {   
    14. private static GCTimerTask instance = null;   
    15. public void run() {   
    16. Calendar cal = new GregorianCalendar();   
    17. int hour24 = cal.get(Calendar.HOUR_OF_DAY); // 0..23   
    18. int min = cal.get(Calendar.MINUTE); // 0..59   
    19. System.out.print("["+String.valueOf(hour24)+":"+String.valueOf(min)+"]");   
    20. System.out.println("JVM可用内存:" + java.lang.Runtime.getRuntime().  
    21. freeMemory() / (1024*1024)+"M/"+java.lang.Runtime.getRuntime()
      .totalMemory()/(1024*1024)+"M" );
    22. System.gc();   
    23. }   
    24. private void startWork()   
    25. {   
    26. Timer t = new Timer();   
    27. t.schedule(instance,0,1000*60);   
    28. }   
    29. public static GCTimerTask getInstance()   
    30. {   
    31. if(instance==null) {   
    32. instance = new GCTimerTask();   
    33. instance.startWork();   
    34. }   
    35. return instance;   
    36. }   

    这个类虽然简单,但初学者从中应该学到
    1)timer类的用法
    2)java.lang.Runtime.getRuntime().freeMemory(),java.lang.Runtime.getRuntime().totalMemory(),System.gc()
    这三个方法的使用,需要说明的是System.gc()并不能**JVM马上释放内存,如果那样,我的内存溢出问题早就解决了.
    3)getInstance()单例模式,
    4)最后的就是怎么用这个类的问题,我把它放到了EncodingFilter类中,现在很多JSP程序中都有这个类吧

    1. public final void init(final FilterConfig arg0) throws ServletException {  
    2. GCTimerTask.getInstance();  
    3. this.filterConfig = arg0;  
    4. this.encoding = filterConfig.getInitParameter("encoding");  
    5. String value = filterConfig.getInitParameter("ignore");  
    6. if (value == null) {  
    7. this.ignore = true;  
    8. }   
    9. else if (value.equalsIgnoreCase("true")) {  
    10. this.ignore = true;  
    11. }   
    12. else if (value.equalsIgnoreCase("yes")) {  
    13. this.ignore = true;  
    14. }   
    15. else {  
    16. this.ignore = false;  
    17. }  

    JVM可用内存:405M/508M

  • 相关阅读:
    运算符重载
    C++ 画星号图形——圆形(核心代码记录)
    C++ 画星号图形——空心三角形(星号左对齐)(核心代码介绍)
    C++ 画星号图形——空心三角形(星号居中对齐)(核心代码介绍)
    QMap迭代器
    QVector也是隐式数据共享的
    调试dump文件
    How does the compilation and linking process work?
    when to use reinterpret_cast
    构造类的时候,提供类型转换
  • 原文地址:https://www.cnblogs.com/sode/p/2688786.html
Copyright © 2011-2022 走看看