java内存监测

java内存监测

1、关于Runtime的totalMemory和freeMemory的区别
    很简单,totalMemory就是目前jvm中的内存总量,这个值是可以变的,最大等于你设定的jvm可用最大内存总量(eg.-Xmx512M表明你的jvm最大内存量就是512M),最小等于你设定的jvm最小内存总量(-Xms128M)。
    freeMomory就是当前jvm中可以用来分配的内存量。

2、为了检测一个方法到底是多么的耗费内存,我写了个线程来监视它,在方法调用之前启动该线程,调用后停止该线程,线程执行期间会定期的打印出内存情况到控制台。
   
public   class  MemoryListner  implements  Runnable {
        
private   boolean  stop1;

        
public  MemoryListner( boolean  stop) {
            
this .stop1  =  stop;
        }
        
public   void  run() {
            
while  ( ! stop1) {
                
try  {
                    Thread.sleep(
100 );
                } 
catch  (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Runtime.getRuntime().totalMemory()
+ " : " + Runtime.getRuntime().freeMemory());
            }
            System.out.println(
" Complete " );
        }
       public void stop(){
          this.stop1 = true;
       }

    }


你可能感兴趣的:(java内存监测)