<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Blog – Aymen Jamaaoui</title><link>https://aymenjamaaoui.dev/en/blog/</link><description>Posts about development and IT: tutorials, tips, news, quizzes and a bit of retro.</description><image><title>Aymen Jamaaoui</title><url>https://aymenjamaaoui.dev/images/og-en.png</url><link>https://aymenjamaaoui.dev/images/og-en.png</link></image><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sat, 24 Oct 2026 20:45:00 +0200</lastBuildDate><atom:link href="https://aymenjamaaoui.dev/en/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Hexagonal architecture with Spring Boot: a simple example</title><link>https://aymenjamaaoui.dev/en/blog/hexagonal-architecture-spring-boot/</link><pubDate>Sat, 24 Oct 2026 20:45:00 +0200</pubDate><guid>https://aymenjamaaoui.dev/en/blog/hexagonal-architecture-spring-boot/</guid><description>Domain, ports and adapters in a small Spring Boot service that reads Kafka: the code, tests without Spring, and ArchUnit to keep the rule.</description></item><item><title>Kafka and Spring Boot: a complete local project</title><link>https://aymenjamaaoui.dev/en/blog/kafka-spring-boot-locally/</link><pubDate>Sat, 24 Oct 2026 19:00:00 +0200</pubDate><guid>https://aymenjamaaoui.dev/en/blog/kafka-spring-boot-locally/</guid><description>Kafka in KRaft mode in Docker, one Spring Boot service that publishes, another one that reads: a complete local project, with offsets and partitions.</description></item><item><title>AWS locally with Floci: an emulator, not a mock</title><link>https://aymenjamaaoui.dev/en/blog/aws-locally-floci/</link><pubDate>Sat, 24 Oct 2026 05:30:00 +0200</pubDate><guid>https://aymenjamaaoui.dev/en/blog/aws-locally-floci/</guid><description>Floci emulates AWS on your machine: what makes it different from a mock, then an example with the AWS CLI, the Java SDK (S3, DynamoDB) and the web console.</description></item><item><title>Java dev machine: 8, 17 and 25 side by side with mise</title><link>https://aymenjamaaoui.dev/en/blog/java-dev-machine-mise/</link><pubDate>Sat, 24 Oct 2026 03:30:00 +0200</pubDate><guid>https://aymenjamaaoui.dev/en/blog/java-dev-machine-mise/</guid><description>Java 8, 17 and 25, Maven, Node, Python and command-line tools: one version per project with mise, nothing as root, and a fast terminal.</description></item><item><title>Java in Docker and Kubernetes: avoid OOMKilled</title><link>https://aymenjamaaoui.dev/en/blog/java-docker-kubernetes-oomkilled/</link><pubDate>Fri, 23 Oct 2026 21:30:00 +0200</pubDate><guid>https://aymenjamaaoui.dev/en/blog/java-docker-kubernetes-oomkilled/</guid><description>Pod killed with OOMKilled (exit code 137) while the heap looks fine: what the JVM sees in a container, what adds to the heap, and how to set the memory.</description></item><item><title>JFR, jcmd, VisualVM: which tool for Java memory problems</title><link>https://aymenjamaaoui.dev/en/blog/java-tools-jfr-jcmd-visualvm/</link><pubDate>Fri, 23 Oct 2026 09:00:00 +0200</pubDate><guid>https://aymenjamaaoui.dev/en/blog/java-tools-jfr-jcmd-visualvm/</guid><description>GC logs, jstat, jcmd, JFR, Eclipse MAT, VisualVM: which tool for which question, what it costs in production, and a JFR example.</description></item><item><title>Java heap dump: find a memory leak with Eclipse MAT</title><link>https://aymenjamaaoui.dev/en/blog/java-heap-dump-eclipse-mat/</link><pubDate>Fri, 23 Oct 2026 02:00:00 +0200</pubDate><guid>https://aymenjamaaoui.dev/en/blog/java-heap-dump-eclipse-mat/</guid><description>Take a heap dump with jcmd, then find the leak with Eclipse MAT: Leak Suspects, retained heap, dominator tree and the path to GC roots.</description></item><item><title>Java memory leaks: 6 classic cases, reproduced</title><link>https://aymenjamaaoui.dev/en/blog/java-memory-leaks/</link><pubDate>Fri, 23 Oct 2026 01:05:00 +0200</pubDate><guid>https://aymenjamaaoui.dev/en/blog/java-memory-leaks/</guid><description>Static collection, cache, listeners, ThreadLocal, class loaders, files: six Java memory leaks reproduced, how to see them and how to fix them.</description></item><item><title>Reading a Java GC log: every number explained</title><link>https://aymenjamaaoui.dev/en/blog/read-java-gc-log/</link><pubDate>Thu, 22 Oct 2026 23:40:00 +0200</pubDate><guid>https://aymenjamaaoui.dev/en/blog/read-java-gc-log/</guid><description>Turn on the GC log, read a G1 line word by word, follow 4 numbers and spot the warning signs: Pause Full, humongous objects, evacuation failure.</description></item><item><title>Java OutOfMemoryError: every message, reproduced</title><link>https://aymenjamaaoui.dev/en/blog/java-outofmemoryerror-messages/</link><pubDate>Thu, 22 Oct 2026 22:40:00 +0200</pubDate><guid>https://aymenjamaaoui.dev/en/blog/java-outofmemoryerror-messages/</guid><description>Java heap space, GC overhead, Metaspace, direct buffer, native thread: each OutOfMemoryError reproduced, what it means and what to check.</description></item><item><title>The Java garbage collector: an up-to-date guide (Java 25)</title><link>https://aymenjamaaoui.dev/en/blog/java-garbage-collector-guide/</link><pubDate>Thu, 22 Oct 2026 16:40:00 +0200</pubDate><guid>https://aymenjamaaoui.dev/en/blog/java-garbage-collector-guide/</guid><description>JVM memory, generations, garbage collectors, options and common myths: the essentials of the Java GC in one guide, up to date for Java 25.</description></item><item><title>Common myths about the Java garbage collector</title><link>https://aymenjamaaoui.dev/en/blog/java-garbage-collector-myths/</link><pubDate>Thu, 22 Oct 2026 16:20:00 +0200</pubDate><guid>https://aymenjamaaoui.dev/en/blog/java-garbage-collector-myths/</guid><description>System.gc(), finalize(), heap size, GC tuning, memory leaks: five common myths about the garbage collector, and what is true in Java 25.</description></item><item><title>JVM options that matter, and the ones that no longer work</title><link>https://aymenjamaaoui.dev/en/blog/jvm-options-that-matter/</link><pubDate>Thu, 22 Oct 2026 15:45:00 +0200</pubDate><guid>https://aymenjamaaoui.dev/en/blog/jvm-options-that-matter/</guid><description>-Xms, -Xmx, MaxGCPauseMillis, -Xlog, heap dump, MaxRAMPercentage: the JVM options worth knowing in Java 25, and the old ones that no longer work.</description></item><item><title>Java garbage collectors in 2026: which one is running yours?</title><link>https://aymenjamaaoui.dev/en/blog/java-garbage-collectors-2026/</link><pubDate>Thu, 22 Oct 2026 13:30:00 +0200</pubDate><guid>https://aymenjamaaoui.dev/en/blog/java-garbage-collectors-2026/</guid><description>Serial, Parallel, G1, ZGC, Shenandoah, Epsilon: what each GC is for, which one the JVM picks by default and how to check it. Up to date for Java 25.</description></item><item><title>GC generations and cycles: young, old, minor, major, full</title><link>https://aymenjamaaoui.dev/en/blog/gc-generations-cycles-young-old-minor-major-full/</link><pubDate>Thu, 22 Oct 2026 04:10:00 +0200</pubDate><guid>https://aymenjamaaoui.dev/en/blog/gc-generations-cycles-young-old-minor-major-full/</guid><description>Why the JVM splits young and old objects, how an object reaches the old generation, and what minor, major and full GC really mean. Up to date for Java 25.</description></item><item><title>JVM memory: heap, stack and Metaspace</title><link>https://aymenjamaaoui.dev/en/blog/jvm-memory-heap-stack-metaspace/</link><pubDate>Thu, 22 Oct 2026 03:40:00 +0200</pubDate><guid>https://aymenjamaaoui.dev/en/blog/jvm-memory-heap-stack-metaspace/</guid><description>Where the JVM keeps variables, objects and classes, what lives outside the heap, and what changed after PermGen. Up to date for Java 25.</description></item><item><title>One Chrome per Google account on macOS</title><link>https://aymenjamaaoui.dev/en/blog/one-chrome-per-google-account-macos/</link><pubDate>Thu, 22 Oct 2026 00:00:00 +0200</pubDate><guid>https://aymenjamaaoui.dev/en/blog/one-chrome-per-google-account-macos/</guid><description>On macOS, all Chrome profiles share one icon in the Dock and Cmd+Tab. How I made one copy of Chrome per account, and what it costs.</description></item></channel></rss>