blob: 2577b2ab5e2b5bab806324535676ca8a520c2b8f [file] [log] [blame]
/*
* Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Oracle nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* This file defines heapdump function to heap dump
* in binary format. User can call this function
* based on events. For example, a timer thread can
* keep checking heap threshold and depending on
* specific expected threshold value, it can call
* heapdump to dump the keep. File name can contain
* timestamp so that multiple heapdumps can be generated
* for the same process.
*/
/**
* Function to dump heap in binary format.
*
* @param file heap dump file name [optional]
*/
function heapdump(file) {
// no file specified, show file open dialog
if (file == undefined) {
file = fileDialog();
// check whether user cancelled the dialog
if (file == null) return;
}
/*
* Get HotSpotDiagnostic MBean and wrap it as convenient
* script wrapper using 'mbean' function. Instead of using
* MBean proxies 'mbean' function creates a script wrapper
* that provides similar convenience but uses explicit
* invocation behind the scene. This implies that mbean
* wrapper would the same for dynamic MBeans as well.
*/
var diagBean = mbean("com.sun.management:type=HotSpotDiagnostic");
// dump the heap in the file
diagBean.dumpHeap(file, true);
}