< prev index next >
jdk/test/java/lang/instrument/NMTHelper.java
Print this page
*** 25,36 ****
import java.io.FileWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Arrays;
import java.util.stream.Collectors;
! import sun.management.ManagementFactoryHelper;
! import com.sun.management.DiagnosticCommandMBean;
public class NMTHelper
{
public static void baseline() {
executeDcmd("vmNativeMemory", "baseline");
--- 25,37 ----
import java.io.FileWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Arrays;
import java.util.stream.Collectors;
! import java.lang.management.ManagementFactory;
! import javax.management.MalformedObjectNameException;
! import javax.management.ObjectName;
public class NMTHelper
{
public static void baseline() {
executeDcmd("vmNativeMemory", "baseline");
*** 51,71 ****
}
throw new Exception("Could not find the Total line in the NMT output.");
}
private static String executeDcmd(String cmd, String ... args) {
! DiagnosticCommandMBean dcmd = ManagementFactoryHelper.getDiagnosticCommandMBean();
Object[] dcmdArgs = {args};
String[] signature = {String[].class.getName()};
String cmdString = cmd + " " +
Arrays.stream(args).collect(Collectors.joining(" "));
File f = new File("dcmdoutput-" + cmd + "-" + System.currentTimeMillis() + ".txt");
System.out.println("Output from Dcmd '" + cmdString + "' is being written to file " + f);
try (FileWriter fw = new FileWriter(f)) {
fw.write("> " + cmdString + ":");
! String result = (String) dcmd.invoke(cmd, dcmdArgs, signature);
fw.write(result);
return result;
} catch(Exception ex) {
ex.printStackTrace();
}
--- 52,78 ----
}
throw new Exception("Could not find the Total line in the NMT output.");
}
private static String executeDcmd(String cmd, String ... args) {
! ObjectName oname = null;
! try {
! oname = ObjectName.getInstance("com.sun.management:type=DiagnosticCommand");
! } catch (MalformedObjectNameException mone) {
! throw new RuntimeException(mone);
! }
Object[] dcmdArgs = {args};
String[] signature = {String[].class.getName()};
String cmdString = cmd + " " +
Arrays.stream(args).collect(Collectors.joining(" "));
File f = new File("dcmdoutput-" + cmd + "-" + System.currentTimeMillis() + ".txt");
System.out.println("Output from Dcmd '" + cmdString + "' is being written to file " + f);
try (FileWriter fw = new FileWriter(f)) {
fw.write("> " + cmdString + ":");
! String result = (String)ManagementFactory.getPlatformMBeanServer().
! invoke(oname, cmd, dcmdArgs, signature);
fw.write(result);
return result;
} catch(Exception ex) {
ex.printStackTrace();
}
< prev index next >