Package org.gridkit.jvmtool.gcflow

Source Code of org.gridkit.jvmtool.gcflow.GcKnowledgeBaseCheck

package org.gridkit.jvmtool.gcflow;

import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.logging.Level;
import java.util.logging.LogManager;

import org.gridkit.jvmtool.gcflow.GcKnowledgeBase.PoolType;
import org.gridkit.nanocloud.CloudFactory;
import org.gridkit.vicluster.ViManager;
import org.gridkit.vicluster.ViNode;
import org.gridkit.vicluster.ViProps;
import org.gridkit.vicluster.telecontrol.jvm.JvmProps;
import org.junit.AfterClass;
import org.junit.Assume;
import org.junit.BeforeClass;
import org.junit.Test;

public class GcKnowledgeBaseCheck {

  public static ViManager cloud = CloudFactory.createCloud();
 
  @BeforeClass
  public static void logOff() {
    LogManager.getLogManager().getLogger("").setLevel(Level.OFF);
  }
 
  @BeforeClass
  public static void initCloud() {
    ViProps.at(cloud.node("**")).setLocalType();
    JvmProps.at(cloud.node("**")).addJvmArg("-Djava.util.logging.config.class=" + LogOff.class.getName());
  }
 
  @AfterClass
  public static void killCloud() {
    cloud.shutdown();
  }
 
  @Test
  public void classify_local() throws IOException {
    dumpMemoryPools();
  }

  @Test
  public void classify_serial_gc() throws IOException {
    try {
      String gc = "-XX:+UseSerialGC";
      ViNode jvm = cloud.node(gc);
      JvmProps.at(jvm).addJvmArg(gc);     
      jvm.exec(new Callable<Void>() {

        @Override
        public Void call() throws Exception {
          dumpMemoryPools();
          return null;
        }
       
      });
    } catch(Exception e) {
      Assume.assumeTrue(false);
    }
  }

  @Test
  public void classify_par_new_gc() throws IOException {
    try {
      String gc = "-XX:+UseParNewGC";
      ViNode jvm = cloud.node(gc);
      JvmProps.at(jvm).addJvmArg(gc);     
      jvm.exec(new Callable<Void>() {
       
        @Override
        public Void call() throws Exception {
          dumpMemoryPools();
          return null;
        }
       
      });
    } catch(Exception e) {
      Assume.assumeTrue(false);
    }
  }

  @Test
  public void classify_ps_gc() throws IOException {
    try {
      String gc = "|-XX:+UseParallelGC|-XX:-UseParallelOldGC";
      ViNode jvm = cloud.node(gc);
      JvmProps.at(jvm).addJvmArg(gc);
      jvm.exec(new Callable<Void>() {
       
        @Override
        public Void call() throws Exception {
          dumpMemoryPools();
          return null;
        }
       
      });
    } catch(Exception e) {
      Assume.assumeTrue(false);
    }
  }

  @Test
  public void classify_par_old_gc() throws IOException {
    try {
      String gc = "-XX:+UseParallelOldGC";
      ViNode jvm = cloud.node(gc);
      JvmProps.at(jvm).addJvmArg(gc);
      jvm.exec(new Callable<Void>() {
       
        @Override
        public Void call() throws Exception {
          dumpMemoryPools();
          return null;
        }
       
      });
    } catch(Exception e) {
      Assume.assumeTrue(false);
    }
  }

  @Test
  public void classify_cms_def_new_gc() throws IOException {
    try {
      String gc = "|-XX:+UseConcMarkSweepGC|-XX:-UseParNewGC";
      ViNode jvm = cloud.node(gc);
      JvmProps.at(jvm).addJvmArg(gc);
      jvm.exec(new Callable<Void>() {
       
        @Override
        public Void call() throws Exception {
          dumpMemoryPools();
          return null;
        }
       
      });
    } catch(Exception e) {
      Assume.assumeTrue(false);
    }
  }

  @Test
  public void classify_cms_par_new_gc() throws IOException {
    try {
      String gc = "|-XX:+UseConcMarkSweepGC|-XX:+UseParNewGC";
      ViNode jvm = cloud.node(gc);
      JvmProps.at(jvm).addJvmArg(gc);
      jvm.exec(new Callable<Void>() {
       
        @Override
        public Void call() throws Exception {
          dumpMemoryPools();
          return null;
        }
       
      });
    } catch(Exception e) {
      Assume.assumeTrue(false);
    }
  }

  @Test
  public void classify_g1_gc() throws IOException {
    try {
      String gc = "-XX:+UseG1GC";
      ViNode jvm = cloud.node(gc);
      JvmProps.at(jvm).addJvmArg(gc);
      jvm.exec(new Callable<Void>() {
       
        @Override
        public Void call() throws Exception {
          dumpMemoryPools();
          return null;
        }
       
      });
    } catch(Exception e) {
      Assume.assumeTrue(false);
    }
  }

  public static void dumpMemoryPools() throws IOException {
    Map<PoolType, Collection<String>> pools = GcKnowledgeBase.classifyMemoryPools(ManagementFactory.getPlatformMBeanServer());
    for(PoolType pt: pools.keySet()) {
      System.out.println(pt.toString() + pools.get(pt));
    }
  }
 
}
TOP

Related Classes of org.gridkit.jvmtool.gcflow.GcKnowledgeBaseCheck

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.