Package railo.commons.surveillance

Source Code of railo.commons.surveillance.HeapDumper

package railo.commons.surveillance;

import java.io.IOException;
import java.lang.management.ManagementFactory;

import javax.management.MBeanServer;

import railo.commons.io.SystemUtil;
import railo.commons.io.res.Resource;
import railo.commons.io.res.type.file.FileResource;

import com.sun.management.HotSpotDiagnosticMXBean;

public class HeapDumper {
 
  /**
   * Dumps the heap to the outputFile file in the same format as the hprof heap dump.
   * If this method is called remotely from another process, the heap dump output is written to a file named outputFile on the machine where the target VM is running. If outputFile is a relative path, it is relative to the working directory where the target VM was started.
   * @param res Resource to write the .hprof file.
   * @param live  if true dump only live objects i.e. objects that are reachable from others
   * @throws IOException
   */
  public static void dumpTo(Resource res, boolean live) throws IOException {
    MBeanServer mbserver = ManagementFactory.getPlatformMBeanServer();
    HotSpotDiagnosticMXBean mxbean = ManagementFactory.newPlatformMXBeanProxy( mbserver, "com.sun.management:type=HotSpotDiagnostic", HotSpotDiagnosticMXBean.class );
   
    String path;
    Resource tmp=null;
    if(res instanceof FileResource) path=res.getAbsolutePath();
    else {
      tmp=SystemUtil.getTempFile("hprof",false);
      path=tmp.getAbsolutePath();
    }
    try{
      // it only
      mxbean.dumpHeap(path, live);
    }
    finally{
      if(tmp!=null && tmp.exists()){
        tmp.moveTo(res);
      }
    }
   
     }
}
TOP

Related Classes of railo.commons.surveillance.HeapDumper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.