New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Speedup max direct memory estimation via Unsafe #13643
Conversation
@franz1981 honestly I think the bigger advantage is that this will work even if Reflection is not possible |
Yep, that's indeed the other "good" thing, although i don't feel well using |
Motivation: PlatformDependent::estimateMaxDirectMemory reflectevly allocates MX Beans to detect JVM's arg MaxDirectMemory (often failing to find any, because unconfigured). Modifications: Allow unsafe to find Bits's max memory static field and use it as a fast path to detect the same direct memory limits used by the JVM runtime Result: Faster and less memory hungry (in term of mallocs) startup
43d5641
to
13d827b
Compare
Thanks for this @franz1981! |
@normanmaurer private static final Pattern MAX_DIRECT_MEMORY_SIZE_ARG_PATTERN = Pattern.compile(
"\\s*-XX:MaxDirectMemorySize\\s*=\\s*([0-9]+)\\s*([kKmMgG]?)\\s*$"); is not really needed anymore and I can just skip allocating it, in case we have our fast-path satisfied, saving both time and some useless allocation/memory footprint, wdyt? |
@franz1981 can you please port to main as well ? |
Motivation: PlatformDependent::estimateMaxDirectMemory reflectevly allocates MX Beans to detect JVM's arg MaxDirectMemory (often failing to find any, because unconfigured). Modifications: Allow unsafe to find Bits's max memory static field and use it as a fast path to detect the same direct memory limits used by the JVM runtime Result: Faster and less memory hungry (in term of mallocs) startup Porting of #13643
Motivation:
PlatformDependent::estimateMaxDirectMemory reflectevly allocates MX Beans to detect JVM's arg MaxDirectMemory (often failing to find any, because unconfigured).
Modifications:
Allow unsafe to find Bits's max memory static field and use it as a fast path to detect the same direct memory limits used by the JVM runtime
Result:
Faster and less memory hungry (in term of mallocs) startup