8176055: JMX diagnostic improvements
Reviewed-by: dfuchs, mchung, ahgross, rhalade, jwilhelm
This commit is contained in:
parent
0dadd76ac8
commit
fb87831bf8
@ -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
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user