8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 package sun.jvm.hotspot.tools;
26
27 import java.io.*;
28 import sun.jvm.hotspot.debugger.JVMDebugger;
29 import sun.jvm.hotspot.runtime.*;
30
31 public class JSnap extends Tool {
32
33 public JSnap() {
34 super();
35 }
36
37 public JSnap(JVMDebugger d) {
38 super(d);
39 }
40
41 public void run() {
42 final PrintStream out = System.out;
43 if (PerfMemory.initialized()) {
44 PerfDataPrologue prologue = PerfMemory.prologue();
45 if (prologue.accessible()) {
46 PerfMemory.iterate(new PerfMemory.PerfDataEntryVisitor() {
47 public boolean visit(PerfDataEntry pde) {
48 if (pde.supported()) {
49 out.print(pde.name());
50 out.print('=');
51 out.println(pde.valueAsString());
52 }
53 // goto next entry
54 return true;
55 }
56 });
57 } else {
58 out.println("PerfMemory is not accessible");
59 }
60 } else {
61 out.println("PerfMemory is not initialized");
62 }
63 }
64
65 public static void main(String[] args) {
66 JSnap js = new JSnap();
67 js.execute(args);
68 }
69 }
|
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 package sun.jvm.hotspot.tools;
26
27 import java.io.*;
28 import java.util.*;
29 import java.util.stream.*;
30 import sun.jvm.hotspot.debugger.JVMDebugger;
31 import sun.jvm.hotspot.runtime.*;
32
33 public class JSnap extends Tool {
34
35 private boolean all;
36
37 public JSnap() {
38 super();
39 }
40
41 public JSnap(JVMDebugger d) {
42 super(d);
43 }
44
45 public void run() {
46 final PrintStream out = System.out;
47 if (PerfMemory.initialized()) {
48 PerfDataPrologue prologue = PerfMemory.prologue();
49 if (prologue.accessible()) {
50 PerfMemory.iterate(new PerfMemory.PerfDataEntryVisitor() {
51 public boolean visit(PerfDataEntry pde) {
52 if (all || pde.supported()) {
53 out.print(pde.name());
54 out.print('=');
55 out.println(pde.valueAsString());
56 }
57 // goto next entry
58 return true;
59 }
60 });
61 } else {
62 out.println("PerfMemory is not accessible");
63 }
64 } else {
65 out.println("PerfMemory is not initialized");
66 }
67 }
68
69 @Override
70 protected void printFlagsUsage() {
71 System.out.println(" -a\tto print all performance counters");
72 super.printFlagsUsage();
73 }
74
75 public static void main(String[] args) {
76 JSnap js = new JSnap();
77 js.all = Arrays.stream(args)
78 .anyMatch(s -> s.equals("-a"));
79
80 if (js.all) {
81 args = Arrays.stream(args)
82 .filter(s -> !s.equals("-a"))
83 .collect(Collectors.toList())
84 .toArray(new String[0]);
85 }
86
87 js.execute(args);
88 }
89 }
|