35 import jdk.test.lib.OutputAnalyzer; |
35 import jdk.test.lib.OutputAnalyzer; |
36 |
36 |
37 public class TestPrintReferences { |
37 public class TestPrintReferences { |
38 public static void main(String[] args) throws Exception { |
38 public static void main(String[] args) throws Exception { |
39 ProcessBuilder pb_enabled = |
39 ProcessBuilder pb_enabled = |
40 ProcessTools.createJavaProcessBuilder("-XX:+PrintGCDetails", "-XX:+PrintReferenceGC", "-Xmx10M", GCTest.class.getName()); |
40 ProcessTools.createJavaProcessBuilder("-Xlog:gc+ref=debug", "-Xmx10M", GCTest.class.getName()); |
41 OutputAnalyzer output = new OutputAnalyzer(pb_enabled.start()); |
41 OutputAnalyzer output = new OutputAnalyzer(pb_enabled.start()); |
42 |
42 |
43 String countRegex = "[0-9]+ refs"; |
43 String countRegex = "[0-9]+ refs"; |
44 String timeRegex = "[0-9]+[.,][0-9]+ secs"; |
44 String timeRegex = "\\([0-9]+[.,][0-9]+s, [0-9]+[.,][0-9]+s\\) [0-9]+[.,][0-9]+ms"; |
45 |
45 |
46 output.shouldMatch( |
46 output.shouldMatch(".* GC\\([0-9]+\\) SoftReference " + timeRegex + "\n" + |
47 "#[0-9]+: \\[SoftReference, " + countRegex + ", " + timeRegex + "\\]" + |
47 ".* GC\\([0-9]+\\) WeakReference " + timeRegex + "\n" + |
48 "#[0-9]+: \\[WeakReference, " + countRegex + ", " + timeRegex + "\\]" + |
48 ".* GC\\([0-9]+\\) FinalReference " + timeRegex + "\n" + |
49 "#[0-9]+: \\[FinalReference, " + countRegex + ", " + timeRegex + "\\]" + |
49 ".* GC\\([0-9]+\\) PhantomReference " + timeRegex + "\n" + |
50 "#[0-9]+: \\[PhantomReference, " + countRegex + ", " + timeRegex + "\\]" + |
50 ".* GC\\([0-9]+\\) JNI Weak Reference " + timeRegex + "\n" + |
51 "#[0-9]+: \\[JNI Weak Reference, (" + countRegex + ", )?" + timeRegex + "\\]"); |
51 ".* GC\\([0-9]+\\) Ref Counts: Soft: [0-9]+ Weak: [0-9]+ Final: [0-9]+ Phantom: [0-9]+\n"); |
52 |
52 |
53 output.shouldHaveExitValue(0); |
53 output.shouldHaveExitValue(0); |
54 } |
54 } |
55 |
55 |
56 static class GCTest { |
56 static class GCTest { |