The native-image tool performs static analysis while building a native binary to determine the dynamic features(the dynamic language features of the JVM, including reflection and resource handling, compute the dynamically-accessed program elements such as invoked methods or resource URLs at runtime), but it cannot always exhaustively predict all uses. To ensure inclusion of these elements into the native binary, reachability metadata should be provided to the native-image builder. These metadata configs are provided in the native-image-configs
directory.
GraalVM provide an option to create these configs automatically by running the application normally with the native-image agent attached. The configs in the native-image-configs
directory are generated by running existing Apache Kafka System Tests(using GraalVM JIT and attaching the native-image agent to the process) as they are quite exhaustive.
To update reachability metadata, users can set following environment variable and run related jar files. New metadata configs will be generated in the native-image-configs
directory.
export JAVA_TOOL_OPTIONS="-agentlib:native-image-agent=config-merge-dir=/path/to/kafka/docker/native/native-image-configs"
native-image-configs
. As of now these configs are static.serial
GC. Therefore, Native Apache Kafka supports serial
GC and not G1
GC.Check out this guide.
Check out this guide.
Check out this guide.