Files
awesome-kubernetes/v2-docs/java-and-java-performance-optimization.md

125 lines
26 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Java and Memory Management
!!! info "Architectural Context"
Detailed reference for Java and Memory Management in the context of Developer Ecosystem.
## Standard Reference
- [geekflare.com: What is Thread Dump and How to Analyze them? 🌟](https://geekflare.com/dev/generate-analyze-thread-dumps) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [On heap vs off heap memory usage](http://www.javacodegeeks.com/2014/12/on-heap-vs-off-heap-memory-usage.html) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [blog.flipkart.tech: The Art of System Debugging — Decoding CPU Utilization' 🌟](https://blog.flipkart.tech/the-art-of-system-debugging-decoding-cpu-utilization-da75f09ef1ff) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [DZone: Performance Improvement in Java Applications: ORM/JPA 🌟](https://dzone.com/articles/performance-improvement-in-java-applications-orm-j) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [DZone: The JVM Architecture Explained 🌟](https://dzone.com/articles/jvm-architecture-explained) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [DZone: How to Troubleshoot Sudden CPU Spikes](https://dzone.com/articles/troubleshoot-sudden-cpu-spikes) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [DZone refcard: Java Caching](https://dzone.com/refcardz/java-caching) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [Dzone: 7 JVM Arguments of Highly Effective Applications 🌟🌟🌟](https://dzone.com/articles/7-jvm-arguments-of-highly-effective-applications-1) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [dzone.com: Flight Recorder: Examining Java and Kotlin Apps](https://dzone.com/articles/flight-recorder-examining-java-and-kotlin-apps) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [medium: How to reduce your JVM app memory footprint in Docker and Kubernetes' 🌟](https://medium.com/wix-engineering/how-to-reduce-your-jvm-app-memory-footprint-in-docker-and-kubernetes-d6e030d21298) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [dzone: Best Practices: Java Memory Arguments for Containers 🌟](https://dzone.com/articles/best-practices-java-memory-arguments-for-container) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [medium.com/@anurag2397: Tuning JVM containers for better CPU and memory' utilisation in K8s environment](https://medium.com/@anurag2397/solving-javas-core-problems-around-memory-and-cpu-4d0c97748c43) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [danoncoding.com: Tricky Kubernetes memory management for Java applications' 🌟](https://danoncoding.com/tricky-kubernetes-memory-management-for-java-applications-d2f88dd4e9f6) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [medium.com/nordnet-tech: Setting Java Heap Size Inside a Docker Container](https://medium.com/nordnet-tech/setting-java-heap-size-inside-a-docker-container-b5a4d06d2f46) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [medium.com/@sharprazor.app: Memory settings for Java process running in' Kubernetes pod](https://medium.com/@sharprazor.app/memory-settings-for-java-process-running-in-kubernetes-pod-1e608a5d2a64) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [medium.com/codex: Running JVM Applications on Kubernetes: Beyond java' -jar](https://medium.com/codex/running-jvm-applications-on-kubernetes-beyond-java-jar-a095949f3e34) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [lalitchaturveditech.medium.com: Optimize Java Performance On Kubernetes](https://lalitchaturveditech.medium.com/optimize-java-performance-on-kubernetes-5f055d406ecf) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [jet-start.sh: Performance of Modern Java on Data-Heavy Workloads, Part 1' 🌟](https://jet-start.sh/blog/2020/06/09/jdk-gc-benchmarks-part1) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [dzone.com: Java Inside Docker: What You Must Know to Not FAIL](https://dzone.com/articles/java-inside-docker-what-you-must-know-to-not-fail) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [en.wikipedia.org/wiki/List_of_performance_analysis_tools](https://en.wikipedia.org/wiki/List_of_performance_analysis_tools) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [InspectIT](https://en.wikipedia.org/wiki/InspectIT) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [VisualVM](https://en.wikipedia.org/wiki/VisualVM) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [OverOps](https://en.wikipedia.org/wiki/OverOps) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [baeldung.com: How to Analyze Java Thread Dumps 🌟](https://www.baeldung.com/java-analyze-thread-dumps) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [baeldung.com: Capturing a Java Thread Dump](https://www.baeldung.com/java-thread-dump) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [DZone: Understanding the Java Memory Model and Garbage Collection 🌟](https://dzone.com/articles/understanding-the-java-memory-model-and-the-garbag) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [DZone: Memory Leaks and Java Code](https://dzone.com/articles/memory-leak-andjava-code) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
- [Hazelcast JET](https://jet-start.sh) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span>
## Cloud Native Languages
### Java
#### Caching
- **(2025)** [Tecnologías de Heap-Offloading son EHcache, Memcached, Jillegal library, etc.](http://ehcache.org) <span class='md-tag md-tag--warning'>[ES CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--success'>[DE FACTO STANDARD]</span> <span class='md-tag md-tag--info'>[ENTERPRISE-STABLE]</span> — Robust, standards-compliant Java caching library supporting off-heap storage to bypass JVM Garbage Collection overhead. Crucial for high-throughput microservices requiring low-latency data access. [SPANISH CONTENT]
#### Kubernetes Integration
- [piotrminkowski.com: Java Flight Recorder on Kubernetes](https://piotrminkowski.com/2024/02/13/java-flight-recorder-on-kubernetes) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--primary'>[GUIDE]</span> <span class='md-tag md-tag--info'>[ENTERPRISE-STABLE]</span> <span class='md-tag md-tag--secondary'>[GUIDE]</span> — Excellent architectural guide demonstrating how to continuously profile Java applications running on Kubernetes with Java Flight Recorder (JFR) and JDK Mission Control. Uses declarative setups for modern container observation.
#### Memory Management
- **(2014)** [Cambios importantes en la gestión de memoria de Java 8 de Oracle](http://karunsubramanian.com/websphere/one-important-change-in-memory-management-in-java-8) <span class='md-tag md-tag--warning'>[ES CONTENT]</span> <span class='md-tag md-tag--primary'>[GUIDE]</span> <span class='md-tag md-tag--secondary'>[GUIDE]</span> <span class='md-tag md-tag--info'>[LEGACY]</span> — Explores the structural transition in Java 8 memory management, highlighting the replacement of PermGen with Metaspace. Critical for understanding modern JVM memory behavior. [SPANISH CONTENT]
- **(2013)** [PermGen eliminado](http://www.infoq.com/articles/Java-PERMGEN-Removed) <span class='md-tag md-tag--warning'>[ES CONTENT]</span> <span class='md-tag md-tag--secondary'>[GUIDE]</span> <span class='md-tag md-tag--info'>[LEGACY]</span> — Deep-dive InfoQ article outlining the removal of the Permanent Generation (PermGen) in favor of Metaspace. Provides precise technical context on tuning flags and garbage collection changes. [SPANISH CONTENT]
- **(2011)** [How Garbage Collection differs in the three big JVMs](http://apmblog.dynatrace.com/2011/05/11/how-garbage-collection-differs-in-the-three-big-jvms) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--secondary'>[GUIDE]</span> <span class='md-tag md-tag--info'>[LEGACY]</span> — A detailed comparison of Garbage Collection strategies across HotSpot, JRockit, and IBM J9 JVMs. Highly valuable for understanding historical differences in memory compaction and pause times.
- [javarevisited.blogspot.com: How Garbage Collection works in Java? Explained' (2011)](https://javarevisited.blogspot.com/2011/04/garbage-collection-in-java.html) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--primary'>[GUIDE]</span> <span class='md-tag md-tag--secondary'>[GUIDE]</span> <span class='md-tag md-tag--info'>[LEGACY]</span> — A fundamental guide detailing Java Garbage Collection mechanics, generational hypothesis, and basic GC algorithms. Ideal for building baseline knowledge of JVM memory structures.
#### Performance Tuning
- **(2014)** [Free eGuide: JVM Troubleshooting Guide](http://freepromagazine.blogspot.de/2014/07/free-eguide-jvm-troubleshooting-guide.html) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--primary'>[GUIDE]</span> <span class='md-tag md-tag--secondary'>[GUIDE]</span> <span class='md-tag md-tag--info'>[LEGACY]</span> — A legacy JVM troubleshooting guide covering common performance pitfalls, memory issues, and GC analysis patterns. Offers foundational reference value despite its age.
- [tier1app.com](https://tier1app.com) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--info'>[ENTERPRISE-STABLE]</span> — A dedicated APM tool for analyzing Java thread dumps and performance. Provides automated diagnostics for thread contention and deadlocks to optimize JVM application responsiveness.
- [fastthread.io](https://fastthread.io) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--success'>[DE FACTO STANDARD]</span> <span class='md-tag md-tag--info'>[ENTERPRISE-STABLE]</span> — Industrial-grade online Java thread dump analyzer that uses AI diagnostics to identify CPU spikes, thread leaks, and deadlock patterns. Essential for post-mortem analysis of containerized JVM workloads.
- [gceasy.io](https://gceasy.io) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--success'>[DE FACTO STANDARD]</span> <span class='md-tag md-tag--info'>[ENTERPRISE-STABLE]</span> — Machine-learning powered JVM Garbage Collection log analyzer. Automates the detection of memory leaks, GC pauses, and heap sizing misconfigurations, offering actionable recommendations for optimization.
- [heaphero.io](https://heaphero.io) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[ENTERPRISE-STABLE]</span> — An automated cloud-based JVM heap dump analyzer built to parse large memory dumps quickly. Detects memory leaks and optimizes data structure footprints to resolve OutOfMemoryError crashes.
- [Jillegal OffHeap Module](https://github.com/serkan-ozal/jillegal) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> <span class='md-tag md-tag--warning'>[EMERGING]</span> <span class='md-tag md-tag--info'>[LEGACY]</span> — An experimental library designed to bypass standard JVM memory allocation by managing objects off-heap. Note: This project is archived and has been inactive for over 4 years; it is recommended for historical study rather than production use.
- [Byteman](https://byteman.jboss.org) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[ENTERPRISE-STABLE]</span> — A highly flexible bytecode injection tool that simplifies tracing, monitoring, and chaos testing in Java applications. Uses side-loaded rules to inject diagnostics without rebuilding code.
- [developers.redhat.com: Collect JDK Flight Recorder events at runtime with' JMC Agent 🌟](https://developers.redhat.com/blog/2020/10/29/collect-jdk-flight-recorder-events-at-runtime-with-jmc-agent) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--primary'>[GUIDE]</span> <span class='md-tag md-tag--info'>[ENTERPRISE-STABLE]</span> <span class='md-tag md-tag--secondary'>[GUIDE]</span> — Demonstrates using the JDK Mission Control (JMC) Agent to dynamically inject JFR events into running JVMs. Enables real-time production diagnostics with near-zero overhead.
- [developers.redhat.com: Checkpointing Java from outside of Java](https://developers.redhat.com/blog/2020/10/15/checkpointing-java-from-outside-of-java) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--primary'>[GUIDE]</span> <span class='md-tag md-tag--warning'>[EMERGING]</span> <span class='md-tag md-tag--secondary'>[GUIDE]</span> — Introduces techniques to checkpoint running Java processes from the OS level using CRIU. Essential groundwork for achieving instant-start capabilities in containerized Java serverless workloads.
- [developers.redhat.com: A faster way to access JDK Flight Recorder data](https://developers.redhat.com/articles/2021/11/23/faster-way-access-jdk-flight-recorder-data) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--primary'>[GUIDE]</span> <span class='md-tag md-tag--info'>[ENTERPRISE-STABLE]</span> <span class='md-tag md-tag--secondary'>[GUIDE]</span> — Explores programmatic, low-latency access to JDK Flight Recorder data streams at runtime. Provides architecture blueprints for exporting profiling telemetry directly into external APM platforms.
## Infrastructure Integration
### Local Development
#### Networking
- [vladmihalcea.com: How to tunnel localhost to the public Internet](https://vladmihalcea.com/tunnel-localhost-public-internet) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--primary'>[GUIDE]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> <span class='md-tag md-tag--secondary'>[GUIDE]</span> — A practical walkthrough on exposing local servers to the public internet using tools like ngrok. Facilitates rapid debugging of external webhooks and third-party APIs during local microservices development.
## Runtime Optimizations
### Application Architecture
#### Caching Strategies
- [vladmihalcea.com: Caching best practices](https://vladmihalcea.com/caching-best-practices) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Advanced guidelines on data caching layers. Focuses on cache eviction strategies, write-through sync, and invalidation consistency protocols in microservices.
#### Persistence Layer
- [vladmihalcea.com: 14 High-Performance Java Persistence Tips](https://vladmihalcea.com/14-high-performance-java-persistence-tips) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — In-depth checklist to optimize JDBC, Hibernate, and JPA operations. Discusses query batching, dirty checking, dynamic sorting, and connection pool sizing.
### JVM Tuning
#### Garbage Collection
- **(2016)** [jenkins.io - Tuning Jenkins GC For Responsiveness and Stability with Large Instances 🌟](https://www.jenkins.io/blog/2016/11/21/gc-tuning) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Landmark analytical study detailing optimized GC settings for massive scale Jenkins controller instances. Discusses keeping response times low under heavy CI execution queues.
- [developers.redhat.com: Shenandoah garbage collection in OpenJDK 16: Concurrent' reference processing](https://developers.redhat.com/articles/2021/05/20/shenandoah-garbage-collection-openjdk-16-concurrent-reference-processing) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Deep dive into OpenJDK 16's concurrent reference processing in the Shenandoah Garbage Collector. Discusses structural barrier enhancements that limit GC pauses to sub-milliseconds.
- [kstefanj.github.io: GC progress from JDK 8 to JDK 17](https://kstefanj.github.io/2021/11/24/gc-progress-8-17.html) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Empirical performance benchmarks tracking G1GC, ParallelGC, ZGC, and Shenandoah collection efficiency improvements from Java SE 8 through LTS 17.
- [developers.redhat.com: How to choose the best Java garbage collector](https://developers.redhat.com/articles/2021/11/02/how-choose-best-java-garbage-collector) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Architect guide comparing major modern GCs (G1, ZGC, Shenandoah) against application profiles to balance maximum throughput, latency tolerances, and system memory.
#### Language Fundamentals
- [javarevisited.blogspot.com: 10 Things Java Programmers Should Learn in 2022](https://javarevisited.blogspot.com/2017/12/10-things-java-programmers-should-learn.html) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Highlights classic competencies for advanced Java engineers, such as concurrency paradigms, GC tuning, microservices, and modern framework shifts.
- [freecodecamp.org: Learn the Basics of Java Programming](https://www.freecodecamp.org/news/learn-the-basics-of-java-programming) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Beginner-centric handbook focusing on OOP concepts, procedural mechanics, and structural paradigms inside the Java virtual machine environment.
- [freecodecamp.org: Advanced Object-Oriented Programming in Java Full Book](https://www.freecodecamp.org/news/object-oriented-programming-in-java) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Detailed technical book-style guide exploring advanced object-oriented paradigms. Focuses on design patterns, polymorphic interfaces, and encapsulation policies.
- [linkedin.com/pulse: Difference between Executor, ExecutorService, and Executors' class in Java!](https://www.linkedin.com/pulse/difference-between-executor-executorservice-executors-omar-ismail) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Clarifies functional differences in the Java Concurrency Framework interface hierarchy. Highlights thread pooling strategies and execution submission lifecycles.
- [freecodecamp.org: How to Write Unit Tests in Java](https://www.freecodecamp.org/news/java-unit-testing) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Walkthrough covering JUnit 5 framework testing. Focuses on parameterized tests, Mockito integration, and code coverage reporting in build cycles.
- [Running Jenkins on Java 11 🌟](https://www.jenkins.io/doc/administration/requirements/jenkins-on-java-11/#:~:text=The%20easiest%20way%20to%20run,images%2C%20use%20the%20jdk11%20tag.) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--primary'>[DOCUMENTATION]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Administrative guide addressing the platform transition of the Jenkins controller from obsolete Java 8 engines to modern Java 11 runtime profiles.
#### Monitoring and Profiling
- [developers.redhat.com: Get started with JDK Flight Recorder in OpenJDK 8u' 🌟](https://developers.redhat.com/blog/2020/08/25/get-started-with-jdk-flight-recorder-in-openjdk-8u) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[LEGACY]</span> — Outlines configuring and analyzing OpenJDK 8u runtime events utilizing JDK Flight Recorder (JFR) and Mission Control. Essential for debugging containerized legacy runtimes.
- [blog.heaphero.io: HeapHero - Java & Android Heap Dump Analyzer](https://blog.heaphero.io) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Portal exploring the HeapHero engine. Focuses on indexing memory leaks, analyzing garbage collection impact, and tracking unused objects from heap dumps.
- [developers.redhat.com: JDK Flight Recorder support for GraalVM Native Image:' The journey so far 🌟](https://developers.redhat.com/articles/2021/07/23/jdk-flight-recorder-support-graalvm-native-image-journey-so-far) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Reviews progress in compiling low-overhead JVM diagnostics natively inside GraalVM images. Analyzes memory footprint tracking constraints and compilation trade-offs.
- [speakerdeck.com: Profiling a Java Application @DevDays 2023 | Victor Rentea](https://speakerdeck.com/victorrentea/profiling-a-java-application-at-devdays-2023) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — High-density presentation slide deck dissecting execution profiling tools. Teaches identification of CPU hotspots, thread lock contention, and high garbage creation loops.
#### Performance Optimization
- [OpenHFT/Java-Thread-Affinity](https://github.com/OpenHFT/Java-Thread-Affinity) <span class='md-tag md-tag--info'>⭐ 1895</span> <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[ENTERPRISE-STABLE]</span> — Highly optimized library that binds Java execution threads to specific CPU cores. Mitigates task context-switching overhead in low-latency financial systems.
### Kubernetes Tuning
#### JVM in Containers
- **(2022)** [blog.gceasy.io: Best practices: Java memory arguments for Containers 🌟](https://blog.gceasy.io/best-practices-java-memory-arguments-for-containers) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Deep analysis of standard flags (like -XX:+UseContainerSupport and -XX:MaxRAMPercentage) needed to ensure JVM containers accurately dynamically self-size.
- **(2021)** [blog.openshift.com: Scaling Java Containers 🌟](https://www.redhat.com/en/blog/scaling-java-containers) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Explores container resource limit considerations for Java workloads. Details memory calculation adjustments (Heap vs Non-Heap) to prevent OOMKills.
- [tech.olx.com: Improving JVM Warm-up on Kubernetes 🌟](https://tech.olx.com/improving-jvm-warm-up-on-kubernetes-1b27dd8ecd58) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Operational case study detailing OLX's strategy to remediate high CPU spikes caused by JVM JIT compiling during initial Kubernetes pod scaling actions.
- [itnext.io: How to cold start fast a java service on k8s (EKS)](https://itnext.io/how-to-cold-start-fast-a-java-service-on-k8s-eks-3a7b4450845d) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Engineering exploration highlighting techniques to minimize startup latency for Spring Boot/Quarkus container images, leveraging GraalVM, CRaC, or CPU shares.
#### Monitoring and Profiling (1)
- **(2021)** [blog.openshift.com: Debugging Java Applications On OpenShift and Kubernetes](https://www.redhat.com/en/blog/debugging-java-applications-on-openshift-kubernetes) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Walkthrough covering remote JVM agent connection attachment procedures targeting pods deployed within secured target Kubernetes namespaces.
#### Observability
- **(2021)** [blog.openshift.com: Performance Metrics (APM) for Spring Boot Microservices on OpenShift](https://www.redhat.com/en/blog/performance-metrics-apm-spring-boot-microservices-openshift) <span class='md-tag md-tag--warning'>[EN CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Comprehensive integration guide explaining how to hook up Spring Boot Prometheus metrics directly into automated OpenShift cluster telemetry layers.
---
💡 **Explore Related:** [Java_Frameworks](./java_frameworks.md) | [API](./api.md) | [JVM Parameters Matrix Table](./jvm-parameters-matrix-table.md)