<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Series on tsvinc</title>
    <link>https://tsvinc.dev/series/</link>
    <description>Recent content in Series on tsvinc</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 24 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://tsvinc.dev/series/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>The Memory Benchmark Nobody Asked For</title>
      <link>https://tsvinc.dev/series/micronaut-256mb/</link>
      <pubDate>Sun, 24 May 2026 00:00:00 +0000</pubDate>
      <guid>https://tsvinc.dev/series/micronaut-256mb/</guid>
      <description>&lt;p&gt;&lt;em&gt;Native image, memory, and the benchmark nobody warned you about.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;A Micronaut 5.0.0 Space Observatory app — 16 REST endpoints, reactive R2DBC, 7-table PostgreSQL schema. The challenge: run it in a 256 MB container with swap disabled. GraalVM native image, garbage collector shootouts, invisible JVM memory, AOT bugs, and reactive backpressure tuning.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/micronaut-5-native-image/&#34;&gt;Micronaut 5 Native Image: 14 Entries vs 1,913&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/native-vs-jvm-128mb/&#34;&gt;Native Image vs JVM at 128 MB&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/observability-tax-micrometer/&#34;&gt;The Observability Tax&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/every-gc-failed-256mb/&#34;&gt;Every GC Failed at 256 MB (Except the Boring One)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/107mb-invisible-jvm-ram/&#34;&gt;107 MB of Invisible JVM RAM&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/jvm-memory-anatomy/&#34;&gt;Your JVM Reports 151 MB. Your Container Uses 248.&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/aot-three-bugs-trenchcoat/&#34;&gt;Three Bugs in a Trenchcoat Pretending to Be One Hang&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/aot-hang-that-wasnt/&#34;&gt;The AOT Hang That Wasn&amp;rsquo;t&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/seven-fixes-zero-errors/&#34;&gt;Seven Fixes, Zero Errors&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/flatmap-backpressure/&#34;&gt;flatMap&amp;rsquo;s Second Argument Saved 1.7 Million Requests&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/loom-carrier-reactive/&#34;&gt;Loom Carrier on a Reactive Stack: 78 MB for Free&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/reactor-removal-benchmark/&#34;&gt;We Removed Reactor. Nothing Got Slower.&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/error-is-not-exception/&#34;&gt;Error Is Not Exception: Micrometer&amp;rsquo;s Silent CPU Metric on Native Image&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/executor-type-virtual/&#34;&gt;ExecutorType.VIRTUAL Doesn&amp;rsquo;t Exist&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/seven-scenarios-one-table/&#34;&gt;265 req/s on All Three Runtimes (Until You Add a Memory Limit)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/designed-reactive-benchmark/&#34;&gt;Designed a Reactive Benchmark. Imperative Won.&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/28-apis-same-throughput/&#34;&gt;The Throughput Was Always 115&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/counter-reset-benchmark-lied/&#34;&gt;Quarkus 12,563 vs Spring 820 (Both Numbers Are Wrong)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/xmx-wont-save-native-image/&#34;&gt;-Xmx Won&amp;rsquo;t Save Your Native Image&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/quarkus-two-stacked-bottlenecks/&#34;&gt;1% CPU and 6-Second Latency&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/two-ways-mistranslate-retry/&#34;&gt;Two ways to mistranslate a retry&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/three-front-doors-one-engine/&#34;&gt;Three Front Doors, One Engine&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/six-ooms-one-http-client/&#34;&gt;Six OOMs and a Connection Pool&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/four-bugs-tests-couldnt-see/&#34;&gt;Four Bugs the Tests Couldn&amp;rsquo;t See&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/mono-zip-empty-404/&#34;&gt;Every Route Registered. Every Request 404&amp;rsquo;d.&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/quarkus-metaspace-floor-256mb/&#34;&gt;16,700 Classes Before Your First Request&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/eight-connections-zero-available/&#34;&gt;Eight Connections, Zero Available&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/benchmark-measuring-orm/&#34;&gt;2492, 2495, 2508&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tsvinc.dev/posts/five-numbers-18-branches/&#34;&gt;Native Image Grew to 734 MB&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
  </channel>
</rss>
