<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/how-the-jvm-actually-works-ixpzpoh1t" -->

---
title: How the JVM Actually Works | daily.dev
description: An explainer walks through how the JVM executes a Java program end to end: compiling source into bytecode and metadata inside class files, the parent...
canonical: https://daily.dev/posts/how-the-jvm-actually-works-ixpzpoh1t
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: How the JVM Actually Works | daily.dev
og:description: An explainer walks through how the JVM executes a Java program end to end: compiling source into bytecode and metadata inside class files, the parent...
og:url: https://daily.dev/posts/how-the-jvm-actually-works-ixpzpoh1t
og:image: https://api.daily.dev/og/posts/IxpzpOh1T.png
og:image:alt: How the JVM Actually Works
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# How the JVM Actually Works

**[ByteByteGo](https://daily.dev/sources/bytebytego)** · 6 min read · 4 upvotes · 0 comments

## Summary

An explainer walks through how the JVM executes a Java program end to end: compiling source into bytecode and metadata inside class files, the parent delegation model used by the class loader subsystem (bootstrap, platform, application loaders), the linking steps of verification, preparation, and resolution followed by initialization, the runtime data areas (heap, method area, JVM stack, program counter, native method stack), and finally execution via a hybrid interpreter plus JIT compiler with hotspot detection and garbage collection. The video includes a sponsored segment for CodeRabbit, an AI code review tool.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.youtube.com/watch?v=bF28LFPjFsI>

## Questions this post answers

### What are the three steps of the JVM linking process?

Linking consists of verification, preparation, and resolution. Verification checks that bytecode is valid and won't corrupt the stack or perform illegal type casts. Preparation allocates memory for static fields and sets default values, like zero for numeric types and null for object references. Resolution converts symbolic references to classes and methods into direct runtime references, either during linking or later on first use.

_daily.dev surfaces JVM internals deep dives for developers debugging classloading or linking issues._

### How does the parent delegation model work in Java's class loader subsystem?

The application class loader first delegates a class-loading request upward to the bootstrap class loader, which loads core classes like java.lang.Object. If unresolved, the request passes to the platform class loader for other JDK classes, and finally to the application class loader for classpath or module path code. This parent-first order prevents application code from overriding core Java classes with malicious versions.

_Developers hardening Java apps against classpath attacks can track internals explainers like this on daily.dev._

### How does the JVM decide when to use the JIT compiler instead of the interpreter?

The JVM starts by interpreting bytecode instruction by instruction for fast startup, then monitors execution frequency at runtime. When a piece of code runs often enough to be flagged as a hot spot, the just-in-time compiler compiles it into native machine code optimized for the CPU and stores it in a code cache, so subsequent calls use the compiled version instead of being reinterpreted.

_Java engineers tuning startup versus throughput trade-offs follow JVM execution deep dives on daily.dev._

## Similar posts on daily.dev

- [EP211: How the JVM Works](https://daily.dev/posts/ep211-how-the-jvm-works-e0xrzznoc) · ByteByteGo · 8 upvotes · 1 comments
- [EP181: How Java Works](https://daily.dev/posts/ep181-how-java-works-2d2lmikyb) · ByteByteGo · 10 upvotes · 0 comments
- [The Road To JVM: The JVM Specification](https://daily.dev/posts/the-road-to-jvm-the-jvm-specification-frh2lrvgj) · The Miners · 0 upvotes · 0 comments

---

Tags: [#java](https://daily.dev/tags/java), [#jvm](https://daily.dev/tags/jvm)

[View this post on daily.dev](https://daily.dev/posts/how-the-jvm-actually-works-ixpzpoh1t)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"How the JVM Actually Works","url":"https://daily.dev/posts/how-the-jvm-actually-works-ixpzpoh1t","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/how-the-jvm-actually-works-ixpzpoh1t"},"datePublished":"2026-09-01T15:49:03.030Z","dateModified":"2026-09-01T15:49:25.089Z","description":"An explainer walks through how the JVM executes a Java program end to end: compiling source into bytecode and metadata inside class files, the parent...","image":"https://i.ytimg.com/vi/bF28LFPjFsI/sddefault.jpg","thumbnailUrl":"https://i.ytimg.com/vi/bF28LFPjFsI/sddefault.jpg","isAccessibleForFree":true,"articleSection":"ByteByteGo","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"ByteByteGo","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/35be29234ee14d01a9cd049c52e12753","url":"https://daily.dev/sources/bytebytego"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/how-the-jvm-actually-works-ixpzpoh1t","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":4},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"java,jvm","timeRequired":"PT6M","video":{"@type":"VideoObject","name":"How the JVM Actually Works","description":"An explainer walks through how the JVM executes a Java program end to end: compiling source into bytecode and metadata inside class files, the parent...","thumbnailUrl":"https://i.ytimg.com/vi/bF28LFPjFsI/sddefault.jpg","uploadDate":"2026-09-01T15:49:03.030Z","duration":"PT6M","url":"https://api.daily.dev/r/IxpzpOh1T","embedUrl":"https://www.youtube.com/embed/bF28LFPjFsI"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"ByteByteGo","item":"https://daily.dev/sources/bytebytego"},{"@type":"ListItem","position":3,"name":"How the JVM Actually Works"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/how-the-jvm-actually-works-ixpzpoh1t#faq","mainEntity":[{"@type":"Question","name":"What are the three steps of the JVM linking process?","acceptedAnswer":{"@type":"Answer","text":"Linking consists of verification, preparation, and resolution. Verification checks that bytecode is valid and won't corrupt the stack or perform illegal type casts. Preparation allocates memory for static fields and sets default values, like zero for numeric types and null for object references. Resolution converts symbolic references to classes and methods into direct runtime references, either during linking or later on first use. daily.dev surfaces JVM internals deep dives for developers debugging classloading or linking issues."}},{"@type":"Question","name":"How does the parent delegation model work in Java's class loader subsystem?","acceptedAnswer":{"@type":"Answer","text":"The application class loader first delegates a class-loading request upward to the bootstrap class loader, which loads core classes like java.lang.Object. If unresolved, the request passes to the platform class loader for other JDK classes, and finally to the application class loader for classpath or module path code. This parent-first order prevents application code from overriding core Java classes with malicious versions. Developers hardening Java apps against classpath attacks can track internals explainers like this on daily.dev."}},{"@type":"Question","name":"How does the JVM decide when to use the JIT compiler instead of the interpreter?","acceptedAnswer":{"@type":"Answer","text":"The JVM starts by interpreting bytecode instruction by instruction for fast startup, then monitors execution frequency at runtime. When a piece of code runs often enough to be flagged as a hot spot, the just-in-time compiler compiles it into native machine code optimized for the CPU and stores it in a code cache, so subsequent calls use the compiled version instead of being reinterpreted. Java engineers tuning startup versus throughput trade-offs follow JVM execution deep dives on daily.dev."}}]}
```

