Package org.graalvm.tools.insight.heap
Class HeapDump.Builder
java.lang.Object
org.graalvm.tools.insight.heap.HeapDump.Builder
- All Implemented Interfaces:
Closeable
,AutoCloseable
- Enclosing class:
HeapDump
Builder to construct content of the heap dump file.
Builder builder = HeapDump.newHeapBuilder(new FileOutputStream(hprof));
builder.dumpHeap((heap) -> {
final ClassInstance classActor = heap.newClass("cartoons.Actor").
field("name", String.class).
field("friend", Object.class).
field("age", int.class).
dumpClass();
final ObjectInstance jerry = heap.newInstance(classActor).
put("name", heap.dumpString("Jerry")).
putInt("age", 47).
// field 'friend' remains null
dumpInstance();
final ObjectInstance tom = heap.newInstance(classActor).
put("name", heap.dumpString("Tom")).
put("friend", jerry).
putInt("age", 32).
dumpInstance();
final ClassInstance classMain = heap.newClass("cartoons.Main").
field("tom", classActor).
field("jerry", classActor).
field("thread", java.lang.Thread.class).
dumpClass();
HeapDump.InstanceBuilder mainBuilder = heap.newInstance(classMain);
final ObjectInstance main = mainBuilder.id();
mainBuilder.put("tom", tom).put("jerry", jerry);
ObjectInstance cathingThread = heap.newThread("Catching Jerry").
addStackFrame(classActor, "tom", "Actor.java", -1, jerry, tom, main).
addStackFrame(classMain, "main", "Main.java", -1, main).
dumpThread();
mainBuilder.put("thread", cathingThread).dumpInstance();
});
- Since:
- 21.1
-
Method Summary
-
Method Details
-
dumpHeap
Generates heap dump.Builder builder = HeapDump.newHeapBuilder(new FileOutputStream(hprof)); builder.dumpHeap((heap) -> { final ClassInstance classActor = heap.newClass("cartoons.Actor"). field("name", String.class). field("friend", Object.class). field("age", int.class). dumpClass(); final ObjectInstance jerry = heap.newInstance(classActor). put("name", heap.dumpString("Jerry")). putInt("age", 47). // field 'friend' remains null dumpInstance(); final ObjectInstance tom = heap.newInstance(classActor). put("name", heap.dumpString("Tom")). put("friend", jerry). putInt("age", 32). dumpInstance(); final ClassInstance classMain = heap.newClass("cartoons.Main"). field("tom", classActor). field("jerry", classActor). field("thread", java.lang.Thread.class). dumpClass(); HeapDump.InstanceBuilder mainBuilder = heap.newInstance(classMain); final ObjectInstance main = mainBuilder.id(); mainBuilder.put("tom", tom).put("jerry", jerry); ObjectInstance cathingThread = heap.newThread("Catching Jerry"). addStackFrame(classActor, "tom", "Actor.java", -1, jerry, tom, main). addStackFrame(classMain, "main", "Main.java", -1, main). dumpThread(); mainBuilder.put("thread", cathingThread).dumpInstance(); });
- Parameters:
generator
- callback that performs the heap generating operations- Throws:
IOException
- when an I/O error occurs- Since:
- 21.1
- See Also:
-
dumpHeap
Generates heap dump with an explicitly specified time stamp. Should there be multipledumps
in a single file, it is expected the subsequent values oftimeStamp
are not going to be decreasing.Builder builder = HeapDump.newHeapBuilder(new FileOutputStream(hprof)); builder.dumpHeap((heap) -> { final ClassInstance classActor = heap.newClass("cartoons.Actor"). field("name", String.class). field("friend", Object.class). field("age", int.class). dumpClass(); final ObjectInstance jerry = heap.newInstance(classActor). put("name", heap.dumpString("Jerry")). putInt("age", 47). // field 'friend' remains null dumpInstance(); final ObjectInstance tom = heap.newInstance(classActor). put("name", heap.dumpString("Tom")). put("friend", jerry). putInt("age", 32). dumpInstance(); final ClassInstance classMain = heap.newClass("cartoons.Main"). field("tom", classActor). field("jerry", classActor). field("thread", java.lang.Thread.class). dumpClass(); HeapDump.InstanceBuilder mainBuilder = heap.newInstance(classMain); final ObjectInstance main = mainBuilder.id(); mainBuilder.put("tom", tom).put("jerry", jerry); ObjectInstance cathingThread = heap.newThread("Catching Jerry"). addStackFrame(classActor, "tom", "Actor.java", -1, jerry, tom, main). addStackFrame(classMain, "main", "Main.java", -1, main). dumpThread(); mainBuilder.put("thread", cathingThread).dumpInstance(); });
- Parameters:
timeStamp
- time when the heap dump is supposed to be taken in millisecondsgenerator
- callback that performs the heap generating operations- Throws:
IOException
- when an I/O error occurs- Since:
- 21.1
- See Also:
-
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
-