/*
* Copyright ( c ) 2015 , 2016 , Oracle and / or its affiliates . All rights reserved .
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER .
*
* This code is free software ; you can redistribute it and / or modify it
* under the terms of the GNU General Public License version 2 only , as
* published by the Free Software Foundation .
*
* This code is distributed in the hope that it will be useful , but WITHOUT
* ANY WARRANTY ; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE . See the GNU General Public License
* version 2 for more details ( a copy is included in the LICENSE file that
* accompanied this code ) .
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work ; if not , write to the Free Software Foundation ,
* Inc . , 51 Franklin St , Fifth Floor , Boston , MA 02110 - 1301 USA .
*
* Please contact Oracle , 500 Oracle Parkway , Redwood Shores , CA 94065 USA
* or visit www . oracle . com if you need additional information or have any
* questions .
*/
package jdk.test.lib.hprof;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;
import jdk.test.lib.hprof.model.Snapshot;
import jdk.test.lib.hprof.parser.Reader;
/**
* Helper class to parse a java heap dump file .
*/
public class HprofParser {
public static void main(String[] args) throws Exception {
if (args.length < 1 ) {
System.out.println("No arguments supplied" );
}
File dump = new File(args[0 ]);
if (!dump.exists() || !dump.isFile()) {
throw new RuntimeException("The dump file does not exist or not a file" );
}
parse(dump);
}
/**
* @ see # parse ( File , boolean , boolean , boolean )
*/
public static File parse(File dump) throws Exception {
return parse(dump, false , true , true );
}
/**
* @ see # parse ( File , boolean , boolean , boolean )
*/
public static File parseWithDebugInfo(File dump) throws Exception {
return parse(dump, true , true , true );
}
/**
* Parse a java heap dump file
*
* @ param dump Heap dump file to parse
* @ param debug Turn on / off debug file parsing
* @ param callStack Turn on / off tracking of object allocation call stack
* @ param calculateRefs Turn on / off tracking object allocation call stack
* @ throws Exception
* @ return File containing output from the parser
*/
public static File parse(File dump, boolean debug, boolean callStack, boolean calculateRefs) throws Exception {
File out = new File("hprof." + System.currentTimeMillis() + ".out" );
if (out.exists()) {
out.delete ();
}
PrintStream psSystemOut = System.out;
try (PrintStream psHprof = new PrintStream(new BufferedOutputStream(new FileOutputStream(out.getAbsolutePath())))) {
System.setOut(psHprof);
int debugLevel = debug ? 2 : 0 ;
try (Snapshot snapshot = Reader.readFile(dump.getAbsolutePath(), callStack, debugLevel)) {
System.out.println("Snapshot read, resolving..." );
snapshot.resolve(calculateRefs);
System.out.println("Snapshot resolved." );
}
} finally {
System.setOut(psSystemOut);
}
return out;
}
}
Messung V0.5 in Prozent C=92 H=94 G=92
¤ Dauer der Verarbeitung: 0.4 Sekunden
¤
*© Formatika GbR, Deutschland