• 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

  • 相关阅读:
    HihoCoder1105 题外话·堆(基础二叉搜索树)
    HihoCoder1080 更为复杂的买卖房屋姿势(线段树+多重lazy)
    HihoCoder1078线段树的区间修改(线段树+lazy)
    HihoCoder1070 区间最小值(简单线段树)
    HDU3577Fast Arrangement(线段树+lazy)
    POJ2985 The k-th Largest Group (并查集+treap)
    HihoCoder1337 动态第k大(treap)
    STL的erase函数和lower_bound
    HihoCoder1329 平衡树·Splay(附STL版)
    etcd 在超大规模数据场景下的性能优化
  • 原文地址:https://www.cnblogs.com/sode/p/2688786.html
Copyright © 2020-2023  润新知