# JVM Scope > Java, runtimes, frameworks, and the systems beneath them: deep technical writing about the JVM and its ecosystem. - Language: en - Full text: https://jvmscope.com/llms-full.txt - Feed: https://jvmscope.com/rss.xml ## Posts - [Reading a GC Log Line by Line](https://jvmscope.com/blog/reading-a-gc-log-line-by-line/) — 2026-10-11 — One run, one quantity, three answers. The allocation rate everyone derives from the default GC log is ten per cent low, and the log says why if you ask it correctly. (Markdown: https://jvmscope.com/blog/reading-a-gc-log-line-by-line.md) - [Streams Versus Loops: What the JIT Sees](https://jvmscope.com/blog/streams-versus-loops-what-the-jit-sees/) — 2026-10-04 — The same pipeline cost 7.05 times the loop over eight elements and 1.31 times over a million. The ratio everyone quotes is a measurement at a trip count. (Markdown: https://jvmscope.com/blog/streams-versus-loops-what-the-jit-sees.md) - [The Cost of Optional](https://jvmscope.com/blog/the-cost-of-optional/) — 2026-09-27 — Identical source, five call sites, one JDK 26 run - nothing allocated at the first and twelve bytes at three others. The wrapper is not what decides. (Markdown: https://jvmscope.com/blog/the-cost-of-optional.md) - [JFR: The Events You Actually Need](https://jvmscope.com/blog/jfr-the-events-you-actually-need/) — 2026-09-13 — Sixty seconds of default settings produced 4.3 MB, three quarters of it one event type, and none of it answered whether the application was lock-contended. (Markdown: https://jvmscope.com/blog/jfr-the-events-you-actually-need.md) - [What a Safepoint Actually Stops](https://jvmscope.com/blog/what-a-safepoint-actually-stops/) — 2026-09-06 — One collection, reported as 2.275 ms by the GC log and 29.6 ms by the safepoint log. The gap is time to safepoint, and each instrument hides a different part of it. (Markdown: https://jvmscope.com/blog/what-a-safepoint-actually-stops.md) - [How the JVM Finds and Loads a Class](https://jvmscope.com/blog/how-the-jvm-finds-and-loads-a-class/) — 2026-08-30 — A hello-world program loads 423 classes before it prints anything. Where they come from, what the JVM does to each one, and how to see it. (Markdown: https://jvmscope.com/blog/how-the-jvm-finds-and-loads-a-class.md) - [Where Spring Boot Startup Time Goes](https://jvmscope.com/blog/where-spring-boot-startup-time-goes/) — 2026-08-26 — Startup time is class loading, condition evaluation and JIT warmup in some proportion. Measure the split before reaching for a fix. (Markdown: https://jvmscope.com/blog/where-spring-boot-startup-time-goes.md) - [Reading a Thread Dump Without Guessing](https://jvmscope.com/blog/reading-a-thread-dump-without-guessing/) — 2026-08-19 — A thread dump answers precise questions if you ask them precisely. What each state really means, and the traps that produce confident wrong diagnoses. (Markdown: https://jvmscope.com/blog/reading-a-thread-dump-without-guessing.md) - [G1 versus ZGC: What the Pause Numbers Hide](https://jvmscope.com/blog/g1-versus-zgc-what-pause-numbers-hide/) — 2026-08-11 — Sub-millisecond pauses are real, and they are not the whole cost. What the two collectors actually trade, and which numbers to compare instead. (Markdown: https://jvmscope.com/blog/g1-versus-zgc-what-pause-numbers-hide.md) - [Escape Analysis and the Allocation That Never Happened](https://jvmscope.com/blog/escape-analysis-and-the-allocation-that-never-happened/) — 2026-08-04 — C2 can delete an object entirely by proving it never escapes. Here is when that works, when it silently stops, and how to measure the difference. (Markdown: https://jvmscope.com/blog/escape-analysis-and-the-allocation-that-never-happened.md) - [Virtual Threads and the Pinning Problem](https://jvmscope.com/blog/virtual-threads-and-the-pinning-problem/) — 2026-07-23 — Virtual threads scale until something nails one to its carrier. Here is what still pins on modern JDKs, and how to see it happen. (Markdown: https://jvmscope.com/blog/virtual-threads-and-the-pinning-problem.md) - [What the JIT Actually Does to Your Hot Loop](https://jvmscope.com/blog/what-the-jit-does-to-your-hot-loop/) — 2026-07-14 — Tiered compilation, on-stack replacement and inlining decide how your loop really runs. Here is how to read those decisions instead of guessing. (Markdown: https://jvmscope.com/blog/what-the-jit-does-to-your-hot-loop.md) ## Pages - [About JVM Scope](https://jvmscope.com/about/) — Why this publication exists, who writes it, what it will and will not publish, and the process every article passes through before it goes out. - [Contact](https://jvmscope.com/contact/) — How to reach JVM Scope about corrections, questions, article suggestions, or anything else regarding the site. - [Privacy Policy](https://jvmscope.com/privacy/) — What JVM Scope collects, the legal basis for it, how long it is kept, and the rights you have under the GDPR. - [Cookie Policy](https://jvmscope.com/cookies/) — Why JVM Scope shows no cookie banner: it sets no cookies, and the one item it stores locally is exempt from consent. - [Terms of Use](https://jvmscope.com/terms/) — The terms that apply when you read JVM Scope: what you may reuse, what the code samples guarantee, and where liability ends. ## Optional - [Reading the runtime](https://jvmscope.com/series/reading-the-runtime/) — series, 5 parts — Articles about the signals a running JVM already emits, and how to read them without guessing. - [The cost of an abstraction](https://jvmscope.com/series/cost-of-an-abstraction/) — series, 2 parts — What a wrapper, a pipeline or a proxy costs is a property of the call site, not of the abstraction. Five articles measuring the difference. - [performance](https://jvmscope.com/tags/performance/) — topic archive, 6 articles - [jit](https://jvmscope.com/tags/jit/) — topic archive, 4 articles - [jvm-internals](https://jvmscope.com/tags/jvm-internals/) — topic archive, 4 articles - [profiling](https://jvmscope.com/tags/profiling/) — topic archive, 4 articles - [gc](https://jvmscope.com/tags/gc/) — topic archive, 3 articles - [java](https://jvmscope.com/tags/java/) — topic archive, 3 articles - [memory](https://jvmscope.com/tags/memory/) — topic archive, 3 articles - [concurrency](https://jvmscope.com/tags/concurrency/) — topic archive, 2 articles - [observability](https://jvmscope.com/tags/observability/) — topic archive, 2 articles - [spring](https://jvmscope.com/tags/spring/) — topic archive, 2 articles - [virtual-threads](https://jvmscope.com/tags/virtual-threads/) — topic archive, 2 articles - [Full text](https://jvmscope.com/llms-full.txt) — every article in one Markdown document - [RSS](https://jvmscope.com/rss.xml)