- 385K All Categories
- 2.5K Data
- 580 Big Data Appliance
- 2K Data Science
- 452K Databases
- 222.3K General Database Discussions
- 32 Multilingual Engine
- 575 MySQL Community Space
- 479 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3.1K ORDS, SODA & JSON in the Database
- 575 SQLcl
- 4K SQL Developer Data Modeler
- 187.7K SQL & PL/SQL
- 21.5K SQL Developer
- 11 Data Integration
- 11 GoldenGate
- 297.6K Development
- 3 Application Development
- 18 Developer Projects
- 140 Programming Languages
- 294.3K Development Tools
- 118 DevOps
- 3.1K QA/Testing
- 646.4K Java
- 30 Java Learning Subscription
- 37K Database Connectivity
- 185 Java Community Process
- 107 Java 25
- 22.2K Java APIs
- 138.3K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 21 Java Essentials
- 172 Java 8 Questions
- 86K Java Programming
- 82 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 206 Java User Groups
- 581 LiveLabs
- 41 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 191 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 240 Portuguese
Is it possible with JMC 6 to have a size-based allocation profiling like the one from JMC 5 ?
I'm working as a performance engineer for an editor, and JMC is a very valuable tool for us. A key feature we use a lot is allocation profiling since reducing the allocation rate has often a good impact on the overall application performance.
We are currently starting to use Java 9, so we need to use JMC 6 to run a JFR instead of JMC 5.5.
After struggling with the new interface, I succeed to use it to do nearly everything I used to do before. But unfortunately, the memory profiling in the new version seems VERY inaccurate and barely usable.
As far as I know, in the "Stack Trace" view, we can only use the "Count" attribute, which seems to be the number of stack traces captured at TLAB creation or when allocation outside TLAB.
Since the TLAB size is not constant, it is not at all a valuable information. I open an old flight recording made an a JVM 8 with both version of JFR.
In this recording, 1 class represents 55% of the total allocated bytes, and there are 2 allocation spots for this class :
- the first one in a thread pool which does few allocation
- the second one in another thread pool which is allocating a lot.
I assume that the JVM will allocate bigger TLABs for threads in the first pool
Indeed, according to JMC 5.5, less than 2% of the allocation pressure is located on the first spot (129GB vs 2.5GB)
However, in JMC6, only the "count" is available, and the first allocation spot count for 30% of the events (45K vs 105K)
Let's say that the first spot is easy to optimize whereas the second allocation spot is not.
=> Using JMC6, we might think that optimizing the first spot is a valuable thing , but in reality it will be nearly insignificant
Is there any setting I didn't see that allow JMC 6 to display size-based memory profiling ?