<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>LAJVM — Articles</title><description>All the articles. Filter by topic, by tag, or search for a word.</description><link>https://lajvm.fr/</link><language>en-US</language><item><title>Making architecture hold up over time</title><link>https://lajvm.fr/en/testing-architecture-archunit-konsist/</link><guid isPermaLink="true">https://lajvm.fr/en/testing-architecture-archunit-konsist/</guid><description>An architecture rule nobody checks does not survive six months of sprints. It only holds if it breaks the build, like any other test.</description><pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate><category>Architecture and design</category></item><item><title>Reading GC logs without external tools</title><link>https://lajvm.fr/en/reading-gc-logs/</link><guid isPermaLink="true">https://lajvm.fr/en/reading-gc-logs/</guid><description>A gc.log file can be read by hand. Once you can decode the summary line and the region-by-region breakdown, you can spot a problem before opening any profiler.</description><pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate><category>Memory and garbage collector</category></item><item><title>Virtual threads in production: what actually breaks</title><link>https://lajvm.fr/en/virtual-threads-in-production/</link><guid isPermaLink="true">https://lajvm.fr/en/virtual-threads-in-production/</guid><description>Since JDK 24, synchronized no longer pins the carrier thread. Most articles online still tell you to avoid it. What actually breaks in production is somewhere else.</description><pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate><category>Runtime and production</category></item><item><title>Tuning the JVM in a container</title><link>https://lajvm.fr/en/tuning-the-jvm-in-a-container/</link><guid isPermaLink="true">https://lajvm.fr/en/tuning-the-jvm-in-a-container/</guid><description>An app that runs fine locally but gets killed on Kubernetes is almost always a story of misread cgroup limits and a badly sized heap. What to tune, and why.</description><pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate><category>Runtime and production</category></item><item><title>Diagnosing a memory leak with a heap dump</title><link>https://lajvm.fr/en/diagnosing-a-memory-leak-with-a-heap-dump/</link><guid isPermaLink="true">https://lajvm.fr/en/diagnosing-a-memory-leak-with-a-heap-dump/</guid><description>When memory climbs and never comes back down, the heap dump holds every object in the heap. The job is to find which one keeps all the memory, and why the GC can&apos;t free it.</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><category>Memory and garbage collector</category></item><item><title>Reading a thread dump with jstack</title><link>https://lajvm.fr/en/reading-a-thread-dump-with-jstack/</link><guid isPermaLink="true">https://lajvm.fr/en/reading-a-thread-dump-with-jstack/</guid><description>The JDK tool that photographs the state of every thread in a live JVM. Enough to see in seconds who is stuck, on what, and why.</description><pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate><category>Profiling and performance</category></item><item><title>Tuning the JVM garbage collector</title><link>https://lajvm.fr/en/tuning-the-jvm-garbage-collector/</link><guid isPermaLink="true">https://lajvm.fr/en/tuning-the-jvm-garbage-collector/</guid><description>GC tuning starts with deciding what you optimise and reading the logs, not with copying flags from a forum. A tour of the levers that actually matter.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><category>Memory and garbage collector</category></item><item><title>Observability with Micronaut: metrics, traces, and the context-propagation trap</title><link>https://lajvm.fr/en/observability-in-micronaut/</link><guid isPermaLink="true">https://lajvm.fr/en/observability-in-micronaut/</guid><description>Wiring Micrometer, OpenTelemetry and structured logs into Micronaut, plus the one thing that quietly breaks everything: losing the propagated context when you hand work to another thread.</description><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate><category>Runtime and production</category></item><item><title>Hexagonal architecture and how to implement it in Spring Boot</title><link>https://lajvm.fr/en/hexagonal-architecture-in-spring-boot/</link><guid isPermaLink="true">https://lajvm.fr/en/hexagonal-architecture-in-spring-boot/</guid><description>Ports &amp; adapters, concretely: a domain with no Spring annotations, ports as interfaces, and Spring demoted to an adapter. With the package layout.</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate><category>Architecture and design</category></item><item><title>How to read a flamegraph</title><link>https://lajvm.fr/en/how-to-read-a-flamegraph/</link><guid isPermaLink="true">https://lajvm.fr/en/how-to-read-a-flamegraph/</guid><description>Width = time, height = stack depth, and above all: the horizontal axis is not time. The reading grid in a few minutes.</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate><category>Profiling and performance</category></item><item><title>Profiling the JVM with async-profiler</title><link>https://lajvm.fr/en/profiling-the-jvm-with-async-profiler/</link><guid isPermaLink="true">https://lajvm.fr/en/profiling-the-jvm-with-async-profiler/</guid><description>A sampling profiler that doesn&apos;t lie about safepoints, runs in production with minimal overhead, and outputs a flamegraph directly.</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate><category>Profiling and performance</category></item></channel></rss>