8155091: Remove SA related functions from tmtools

Remove options that enables support for non-cooperative mode

Reviewed-by: alanb, mchung, sla
This commit is contained in:
Dmitry Samersoff 2016-05-09 23:41:41 +03:00
parent 2945c4da22
commit f4ffadd18b
11 changed files with 56 additions and 110 deletions

@ -28,7 +28,6 @@ module jdk.hotspot.agent {
requires java.desktop;
requires java.rmi;
requires java.scripting;
requires jdk.jcmd;
requires jdk.jdi;
// RMI needs to serialize types in this package
@ -37,13 +36,4 @@ module jdk.hotspot.agent {
provides com.sun.jdi.connect.Connector with sun.jvm.hotspot.jdi.SADebugServerAttachingConnector;
provides com.sun.jdi.connect.Connector with sun.jvm.hotspot.jdi.SAPIDAttachingConnector;
provides jdk.internal.vm.agent.spi.ToolProvider with sun.jvm.hotspot.tools.JStack;
provides jdk.internal.vm.agent.spi.ToolProvider with sun.jvm.hotspot.tools.JInfo;
provides jdk.internal.vm.agent.spi.ToolProvider with sun.jvm.hotspot.tools.ClassLoaderStats;
provides jdk.internal.vm.agent.spi.ToolProvider with sun.jvm.hotspot.tools.FinalizerInfo;
provides jdk.internal.vm.agent.spi.ToolProvider with sun.jvm.hotspot.tools.HeapDumper;
provides jdk.internal.vm.agent.spi.ToolProvider with sun.jvm.hotspot.tools.HeapSummary;
provides jdk.internal.vm.agent.spi.ToolProvider with sun.jvm.hotspot.tools.ObjectHistogram;
provides jdk.internal.vm.agent.spi.ToolProvider with sun.jvm.hotspot.tools.PMap;
}

@ -32,13 +32,12 @@ import sun.jvm.hotspot.memory.*;
import sun.jvm.hotspot.oops.*;
import sun.jvm.hotspot.runtime.*;
import sun.jvm.hotspot.utilities.*;
import jdk.internal.vm.agent.spi.ToolProvider;
/**
A command line tool to print class loader statistics.
*/
public class ClassLoaderStats extends Tool implements ToolProvider {
public class ClassLoaderStats extends Tool {
boolean verbose = true;
public ClassLoaderStats() {
@ -54,11 +53,6 @@ public class ClassLoaderStats extends Tool implements ToolProvider {
return "classLoaderStats";
}
@Override
public void run(String... arguments) {
execute(arguments);
}
public static void main(String[] args) {
ClassLoaderStats cls = new ClassLoaderStats();
cls.execute(args);

@ -28,7 +28,6 @@ import sun.jvm.hotspot.debugger.JVMDebugger;
import sun.jvm.hotspot.oops.*;
import sun.jvm.hotspot.utilities.SystemDictionaryHelper;
import jdk.internal.vm.agent.spi.ToolProvider;
import java.util.ArrayList;
import java.util.Collections;
@ -39,7 +38,7 @@ import java.util.HashMap;
* Iterates over the queue of object pending finalization and prints a
* summary of these objects in the form of a histogram.
*/
public class FinalizerInfo extends Tool implements ToolProvider {
public class FinalizerInfo extends Tool {
public FinalizerInfo() {
super();
@ -54,11 +53,6 @@ public class FinalizerInfo extends Tool implements ToolProvider {
return "finalizerInfo";
}
@Override
public void run(String... arguments) {
execute(arguments);
}
public static void main(String[] args) {
FinalizerInfo finfo = new FinalizerInfo();
finfo.execute(args);

@ -26,7 +26,6 @@ package sun.jvm.hotspot.tools;
import sun.jvm.hotspot.utilities.HeapHprofBinWriter;
import sun.jvm.hotspot.debugger.JVMDebugger;
import jdk.internal.vm.agent.spi.ToolProvider;
import java.io.IOException;
@ -35,7 +34,7 @@ import java.io.IOException;
* process/core as a HPROF binary file. It can also be used as a standalone
* tool if required.
*/
public class HeapDumper extends Tool implements ToolProvider {
public class HeapDumper extends Tool {
private static String DEFAULT_DUMP_FILE = "heap.bin";
@ -81,11 +80,10 @@ public class HeapDumper extends Tool implements ToolProvider {
// HeapDumper -f <file> <args...>
public static void main(String args[]) {
HeapDumper dumper = new HeapDumper();
dumper.run(args);
dumper.runWithArgs(args);
}
@Override
public void run(String... args) {
public void runWithArgs(String... args) {
if (args.length > 2) {
if (args[0].equals("-f")) {
this.dumpFile = args[1];

@ -33,9 +33,8 @@ import sun.jvm.hotspot.debugger.JVMDebugger;
import sun.jvm.hotspot.memory.*;
import sun.jvm.hotspot.oops.*;
import sun.jvm.hotspot.runtime.*;
import jdk.internal.vm.agent.spi.ToolProvider;
public class HeapSummary extends Tool implements ToolProvider {
public class HeapSummary extends Tool {
public HeapSummary() {
super();
@ -55,11 +54,6 @@ public class HeapSummary extends Tool implements ToolProvider {
return "heapSummary";
}
@Override
public void run(String... arguments) {
execute(arguments);
}
public void run() {
CollectedHeap heap = VM.getVM().getUniverse().heap();
VM.Flag[] flags = VM.getVM().getCommandLineFlags();

@ -27,9 +27,8 @@ package sun.jvm.hotspot.tools;
import sun.jvm.hotspot.debugger.JVMDebugger;
import sun.jvm.hotspot.runtime.Arguments;
import sun.jvm.hotspot.runtime.VM;
import jdk.internal.vm.agent.spi.ToolProvider;
public class JInfo extends Tool implements ToolProvider {
public class JInfo extends Tool {
public JInfo() {
super();
}
@ -46,6 +45,7 @@ public class JInfo extends Tool implements ToolProvider {
return false;
}
@Override
public String getName() {
return "jinfo";
}
@ -95,8 +95,7 @@ public class JInfo extends Tool implements ToolProvider {
tool.run();
}
@Override
public void run(String... args) {
public void runWithArgs(String... args) {
int mode = -1;
switch (args.length) {
case 1:
@ -142,7 +141,7 @@ public class JInfo extends Tool implements ToolProvider {
public static void main(String[] args) {
JInfo jinfo = new JInfo();
jinfo.run(args);
jinfo.runWithArgs(args);
}
private void printVMFlags() {

@ -25,9 +25,8 @@
package sun.jvm.hotspot.tools;
import sun.jvm.hotspot.debugger.JVMDebugger;
import jdk.internal.vm.agent.spi.ToolProvider;
public class JStack extends Tool implements ToolProvider {
public class JStack extends Tool {
public JStack(boolean mixedMode, boolean concurrentLocks) {
this.mixedMode = mixedMode;
this.concurrentLocks = concurrentLocks;
@ -45,6 +44,7 @@ public class JStack extends Tool implements ToolProvider {
return false;
}
@Override
public String getName() {
return "jstack";
}
@ -67,8 +67,7 @@ public class JStack extends Tool implements ToolProvider {
tool.run();
}
@Override
public void run(String... args) {
public void runWithArgs(String... args) {
int used = 0;
for (int i = 0; i < args.length; i++) {
if (args[i].equals("-m")) {
@ -93,7 +92,7 @@ public class JStack extends Tool implements ToolProvider {
public static void main(String[] args) {
JStack jstack = new JStack();
jstack.run(args);
jstack.runWithArgs(args);
}
private boolean mixedMode;

@ -27,52 +27,46 @@ package sun.jvm.hotspot.tools;
import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.oops.*;
import sun.jvm.hotspot.runtime.*;
import jdk.internal.vm.agent.spi.ToolProvider;
import java.io.PrintStream;
/** A sample tool which uses the Serviceability Agent's APIs to obtain
an object histogram from a remote or crashed VM. */
public class ObjectHistogram extends Tool implements ToolProvider {
public class ObjectHistogram extends Tool {
public ObjectHistogram() {
super();
super();
}
public ObjectHistogram(JVMDebugger d) {
super(d);
super(d);
}
@Override
public String getName() {
return "objectHistogram";
return "objectHistogram";
}
@Override
public void run(String... arguments) {
execute(arguments);
public void run() {
run(System.out, System.err);
}
public void run() {
run(System.out, System.err);
}
public void run(PrintStream out, PrintStream err) {
// Ready to go with the database...
ObjectHeap heap = VM.getVM().getObjectHeap();
sun.jvm.hotspot.oops.ObjectHistogram histogram =
public void run(PrintStream out, PrintStream err) {
// Ready to go with the database...
ObjectHeap heap = VM.getVM().getObjectHeap();
sun.jvm.hotspot.oops.ObjectHistogram histogram =
new sun.jvm.hotspot.oops.ObjectHistogram();
err.println("Iterating over heap. This may take a while...");
long startTime = System.currentTimeMillis();
heap.iterate(histogram);
long endTime = System.currentTimeMillis();
histogram.printOn(out);
float secs = (float) (endTime - startTime) / 1000.0f;
err.println("Heap traversal took " + secs + " seconds.");
}
err.println("Iterating over heap. This may take a while...");
long startTime = System.currentTimeMillis();
heap.iterate(histogram);
long endTime = System.currentTimeMillis();
histogram.printOn(out);
float secs = (float) (endTime - startTime) / 1000.0f;
err.println("Heap traversal took " + secs + " seconds.");
}
public static void main(String[] args) {
ObjectHistogram oh = new ObjectHistogram();
oh.execute(args);
}
public static void main(String[] args) {
ObjectHistogram oh = new ObjectHistogram();
oh.execute(args);
}
}

@ -28,9 +28,8 @@ import java.io.*;
import java.util.*;
import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.debugger.cdbg.*;
import jdk.internal.vm.agent.spi.ToolProvider;
public class PMap extends Tool implements ToolProvider {
public class PMap extends Tool {
public PMap() {
super();
@ -45,11 +44,6 @@ public class PMap extends Tool implements ToolProvider {
return "pmap";
}
@Override
public void run(String... arguments) {
execute(arguments);
}
public void run() {
run(System.out);
}

@ -44,7 +44,7 @@ import java.io.File;
public class Test8028623 {
public static int \u00CB = 1;
public static String dumpFile = "heap.out";
public static String dumpFile = "heap.bin";
public static void main (String[] args) {
@ -56,9 +56,10 @@ public class Test8028623 {
return;
}
long pid = ProcessTools.getProcessId();
JDKToolLauncher jmap = JDKToolLauncher.create("jmap")
.addToolArg("-F")
.addToolArg("-dump:live,format=b,file=" + dumpFile)
JDKToolLauncher jmap = JDKToolLauncher.create("jhsdb")
.addToolArg("jmap")
.addToolArg("--binaryheap")
.addToolArg("--pid")
.addToolArg(Long.toString(pid));
ProcessBuilder pb = new ProcessBuilder(jmap.getCommand());
OutputBuffer output = ProcessTools.getOutput(pb);

@ -53,33 +53,22 @@ import jdk.test.lib.ProcessTools;
*/
public class JMapHProfLargeHeapTest {
private static final String HEAP_DUMP_FILE_NAME = "heap.hprof";
private static final String HEAP_DUMP_FILE_NAME = "heap.bin";
private static final String HPROF_HEADER_1_0_1 = "JAVA PROFILE 1.0.1";
private static final String HPROF_HEADER_1_0_2 = "JAVA PROFILE 1.0.2";
private static final long M = 1024L;
private static final long G = 1024L * M;
public static void main(String[] args) throws Exception {
// If we are on MacOSX, test if JMap tool is signed, otherwise return
// since test will fail with privilege error.
if (Platform.isOSX()) {
String jmapToolPath = JDKToolFinder.getTestJDKTool("jmap");
ProcessBuilder codesignProcessBuilder = new ProcessBuilder(
"codesign", "-v", jmapToolPath);
Process codesignProcess = codesignProcessBuilder.start();
OutputAnalyzer analyser = new OutputAnalyzer(codesignProcess);
try {
analyser.shouldNotContain("code object is not signed at all");
System.out.println("Signed jmap found at: " + jmapToolPath);
} catch (Exception e) {
// Abort since we can't know if the test will work
System.out
.println("Test aborted since we are on MacOSX and the jmap tool is not signed.");
return;
}
if (!Platform.shouldSAAttach()) {
System.out.println("SA attach not expected to work - test skipped.");
return;
}
// All heap dumps should create 1.0.2 file format
testHProfFileFormat("-Xmx1g", 22 * M, HPROF_HEADER_1_0_2);
// Hotspot internal heapdumper always use HPROF_HEADER_1_0_2 format,
// but SA heapdumper still use HPROF_HEADER_1_0_1 for small heaps
testHProfFileFormat("-Xmx1g", 22 * M, HPROF_HEADER_1_0_1);
/**
* This test was deliberately commented out since the test system lacks
@ -110,9 +99,10 @@ public class JMapHProfLargeHeapTest {
System.out.println("Extracted pid: " + pid);
JDKToolLauncher jMapLauncher = JDKToolLauncher
.createUsingTestJDK("jmap");
jMapLauncher.addToolArg("-dump:format=b,file=" + pid + "-"
+ HEAP_DUMP_FILE_NAME);
.createUsingTestJDK("jhsdb");
jMapLauncher.addToolArg("jmap");
jMapLauncher.addToolArg("--binaryheap");
jMapLauncher.addToolArg("--pid");
jMapLauncher.addToolArg(String.valueOf(pid));
ProcessBuilder jMapProcessBuilder = new ProcessBuilder(
@ -123,12 +113,11 @@ public class JMapHProfLargeHeapTest {
Process jMapProcess = jMapProcessBuilder.start();
OutputAnalyzer analyzer = new OutputAnalyzer(jMapProcess);
analyzer.shouldHaveExitValue(0);
analyzer.shouldContain(pid + "-" + HEAP_DUMP_FILE_NAME);
analyzer.shouldContain("Heap dump file created");
analyzer.shouldContain(HEAP_DUMP_FILE_NAME);
largeHeapProc.getOutputStream().write('\n');
File dumpFile = new File(pid + "-" + HEAP_DUMP_FILE_NAME);
File dumpFile = new File(HEAP_DUMP_FILE_NAME);
Asserts.assertTrue(dumpFile.exists(), "Heap dump file not found.");
try (Reader reader = new BufferedReader(new FileReader(dumpFile))) {