You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Current compressedRefs mode we allocat the ramClass out of the sub4G allocator. This allocator is highly contended as it is used for J9VMThread, J9JavaStacks and JNI memory. However, ramClass memory (in JDKs prior to JDK21) is typically the highesr user of sub 4G memory.
Our main requriement to put ramClasses in sub4G memory is to place the J9Class (ramClass header) sub4G space. This allows us to hav a pointer that is at most 32bits, with 256byte alignment, we can then have 8bits in the pointer free for other purposes (see https://github.com/eclipse-openj9/openj9/blob/master/runtime/oti/j9nonbuilder.h#L3040).
The RamClass allocator keeps track of a free list and tries allocate memory out of the free lists first. Failing to do so it allocates a new class memory segment which makes use of the sub4G allocator.
Proposal:
Given that only one part of the RamClass requires, we should look to sperate how the memory fragments are allocated for the ramClass. We could have the following categories:
One approach could be to replicate the classMemory segment for other two categories above.
Then in the RAMClassAllocationRequest add a new entry to indicate which segment the fragment should be allocated in and make the approriate changes in the ramClass allocator.
The text was updated successfully, but these errors were encountered:
Current compressedRefs mode we allocat the ramClass out of the sub4G allocator. This allocator is highly contended as it is used for J9VMThread, J9JavaStacks and JNI memory. However, ramClass memory (in JDKs prior to JDK21) is typically the highesr user of sub 4G memory.
Our main requriement to put ramClasses in sub4G memory is to place the J9Class (ramClass header) sub4G space. This allows us to hav a pointer that is at most 32bits, with 256byte alignment, we can then have 8bits in the pointer free for other purposes (see https://github.com/eclipse-openj9/openj9/blob/master/runtime/oti/j9nonbuilder.h#L3040).
The ramClass allocation strategy invloves:
Proposal:
Given that only one part of the RamClass requires, we should look to sperate how the memory fragments are allocated for the ramClass. We could have the following categories:
One approach could be to replicate the classMemory segment for other two categories above.
Then in the RAMClassAllocationRequest add a new entry to indicate which segment the fragment should be allocated in and make the approriate changes in the ramClass allocator.
The text was updated successfully, but these errors were encountered: