8176055: JMX diagnostic improvements

Reviewed-by: dfuchs, mchung, ahgross, rhalade, jwilhelm
This commit is contained in:
Harsha Wardhana B 2017-05-12 18:21:13 +05:30
parent 0dadd76ac8
commit fb87831bf8
2 changed files with 14 additions and 4 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -61,9 +61,10 @@ public interface HotSpotDiagnosticMXBean extends PlatformManagedObject {
* @param outputFile the system-dependent filename * @param outputFile the system-dependent filename
* @param live if {@code true} dump only <i>live</i> objects * @param live if {@code true} dump only <i>live</i> objects
* i.e. objects that are reachable from others * i.e. objects that are reachable from others
* @throws IOException if the {@code outputFile} * @throws IOException if the {@code outputFile} already exists,
* cannot be created, opened, or written to. * cannot be created, opened, or written to.
* @throws UnsupportedOperationException if this operation is not supported. * @throws UnsupportedOperationException if this operation is not supported.
* @throws IllegalArgumentException if {@code outputFile} does not end with ".hprof" suffix.
* @throws NullPointerException if {@code outputFile} is {@code null}. * @throws NullPointerException if {@code outputFile} is {@code null}.
* @throws SecurityException * @throws SecurityException
* If a security manager exists and its {@link * If a security manager exists and its {@link

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -22,7 +22,6 @@
* or visit www.oracle.com if you need additional information or have any * or visit www.oracle.com if you need additional information or have any
* questions. * questions.
*/ */
package com.sun.management.internal; package com.sun.management.internal;
import java.io.IOException; import java.io.IOException;
@ -32,6 +31,8 @@ import javax.management.ObjectName;
import com.sun.management.HotSpotDiagnosticMXBean; import com.sun.management.HotSpotDiagnosticMXBean;
import com.sun.management.VMOption; import com.sun.management.VMOption;
import java.security.AccessController;
import java.security.PrivilegedAction;
import sun.management.Util; import sun.management.Util;
/** /**
@ -43,6 +44,14 @@ public class HotSpotDiagnostic implements HotSpotDiagnosticMXBean {
@Override @Override
public void dumpHeap(String outputFile, boolean live) throws IOException { public void dumpHeap(String outputFile, boolean live) throws IOException {
String propertyName = "jdk.management.heapdump.allowAnyFileSuffix";
PrivilegedAction<Boolean> pa = () -> Boolean.parseBoolean(System.getProperty(propertyName, "false"));
boolean allowAnyFileSuffix = AccessController.doPrivileged(pa);
if (!allowAnyFileSuffix && !outputFile.endsWith(".hprof")) {
throw new IllegalArgumentException("heapdump file must have .hprof extention");
}
SecurityManager security = System.getSecurityManager(); SecurityManager security = System.getSecurityManager();
if (security != null) { if (security != null) {
security.checkWrite(outputFile); security.checkWrite(outputFile);