[ https://issues.apache.org/jira/browse/NETBEANS-4618?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17163193#comment-17163193 ]
Jaroslav Tulach commented on NETBEANS-4618: ------------------------------------------- The root cause of the exception is the {{TagBounds[] tagBounds = new TagBounds[0xff];}} array which assumes that each segment appears there only one. When multiple heap dump segments (id {{0x1C}}) are present, the {{tagBound.start}} is set to beginning of the first segment, but the {{tagBound.end}} is set to the end of the last segment. The {{readDumpTag}} code then tries to process everything from start to end and gets confused by other, non-heap data in between. In the particular case of [^multiheapsegment.hprof] a definition of {{STACK_FRAME}} is treated as {{ROOT_NATIVE_STACK}} and then an exception is thrown. > HeapFactory cannot process multi heap segment files > --------------------------------------------------- > > Key: NETBEANS-4618 > URL: https://issues.apache.org/jira/browse/NETBEANS-4618 > Project: NetBeans > Issue Type: Bug > Components: profiler - Base > Affects Versions: 12.0, 12.0.1 > Reporter: Jaroslav Tulach > Priority: Major > Attachments: multiheapsegment.hprof, singleheapsegment.hprof > > > I am trying to generate {{.hprof}} file according to the [Java Profile > 1.0.2|http://hg.openjdk.java.net/jdk6/jdk6/jdk/raw-file/tip/src/share/demo/jvmti/hprof/manual.html#mozTocId848088] > specification. I believe I am fully following the specification (which > allows multiple heap segments), but NetBeans Profiler library chokes up on my > file and yields following exception: > {code:java} > java.lang.IllegalArgumentException: Invalid dump tag 0 at position 1415 > at > org.netbeans.lib.profiler.heap.HprofHeap.readDumpTag(HprofHeap.java:1138) > at > org.netbeans.lib.profiler.heap.HprofHeap.fillHeapTagBounds(HprofHeap.java:1215) > at org.netbeans.lib.profiler.heap.HprofHeap.<init>(HprofHeap.java:140) > at > org.netbeans.lib.profiler.heap.HeapFactory.createHeap(HeapFactory.java:80) > at > org.netbeans.lib.profiler.heap.HeapFactory.createHeap(HeapFactory.java:49) > {code} > I am able to generate the file with a single heap segment (see > [^singleheapsegment.hprof]) as well as multiple heap segments (see > [^multiheapsegment.hprof]). The first one can be opened by NetBeans 12.x, the > latter cannot. > > In my usecase I'd like to generate the file incrementally while my > application is running. As such it is essential to flush the heap segments > multiple times, otherwise I may run out of memory. It would be fantastic if > the NetBeans heap profiler library could be enhanced to work with > multiheapsegment files properly. -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists