The only agent that thinks for itself

Autonomous Monitoring with self-learning AI built-in, operating independently across your entire stack.

Unlimited Metrics & Logs
Machine learning & MCP
5% CPU, 150MB RAM
3GB disk, >1 year retention
800+ integrations, zero config
Dashboards, alerts out of the box
> Discover Netdata Agents

Centralized metrics streaming and storage

Aggregate metrics from multiple agents into centralized Parent nodes for unified monitoring across your infrastructure.

Stream from unlimited agents
Long-term data retention
High availability clustering
Data replication & backup
Scalable architecture
Enterprise-grade security
> Learn about Parents

Fully managed cloud platform

Access your monitoring data from anywhere with our SaaS platform. No infrastructure to manage, automatic updates, and global availability.

Zero infrastructure management
99.9% uptime SLA
Global data centers
Automatic updates & patches
Enterprise SSO & RBAC
SOC2 & ISO certified
> Explore Netdata Cloud

Deploy Netdata Cloud in your infrastructure

Run the full Netdata Cloud platform on-premises for complete data sovereignty and compliance with your security policies.

Complete data sovereignty
Air-gapped deployment
Custom compliance controls
Private network integration
Dedicated support team
Kubernetes & Docker support
> Learn about Cloud On-Premises

Powerful, intuitive monitoring interface

Modern, responsive UI built for real-time troubleshooting with customizable dashboards and advanced visualization capabilities.

Real-time chart updates
Customizable dashboards
Dark & light themes
Advanced filtering & search
Responsive on all devices
Collaboration features
> Explore Netdata UI

Monitor on the go

Native iOS and Android apps bring full monitoring capabilities to your mobile device with real-time alerts and notifications.

iOS & Android apps
Push notifications
Touch-optimized interface
Offline data access
Biometric authentication
Widget support
> Download apps

The future of infrastructure observability

See our strategic direction across AI-native observability, full-stack signals, operational intelligence, and enterprise platform maturity.

AI-native observability
Full-stack signal coverage
Operational intelligence
Enterprise platform maturity
Agent releases every 6 weeks
Cloud continuous delivery
> Explore Product Roadmap

Best energy efficiency

True real-time per-second

100% automated zero config

Centralized observability

Multi-year retention

High availability built-in

Zero maintenance

Always up-to-date

Enterprise security

Complete data control

Air-gap ready

Compliance certified

Millisecond responsiveness

Infinite zoom & pan

Works on any device

Native performance

Instant alerts

Monitor anywhere

AI-native observability

Continuous delivery

Open source foundation

80% Faster Incident Resolution

AI-powered troubleshooting from detection, to root cause and blast radius identification, to reporting.

True Real-Time and Simple, even at Scale

Linearly and infinitely scalable full-stack observability, that can be deployed even mid-crisis.

90% Cost Reduction, Full Fidelity

Instead of centralizing the data, Netdata distributes the code, eliminating pipelines and complexity.

See and Map Your Entire Network

Live topology, flow analytics, and SNMP device and trap monitoring — unified with your full-stack observability.

Control Without Surrender

SOC 2 Type 2 certified with every metric kept on your infrastructure.

Integrations

800+ collectors and notification channels, auto-discovered and ready out of the box.

800+ data collectors
Auto-discovery & zero config
Cloud, infra, app protocols
Notifications out of the box
> Explore integrations
Real Results
46% Cost Reduction

Reduced monitoring costs by 46% while cutting staff overhead by 67%.

— Leonardo Antunez, Codyas

Zero Pipeline

No data shipping. No central storage costs. Query at the edge.

From Our Users
"Out-of-the-Box"

So many out-of-the-box features! I mostly don't have to develop anything.

— Simon Beginn, LANCOM Systems

No Query Language

Point-and-click troubleshooting. No PromQL, no LogQL, no learning curve.

Enterprise Ready
67% Less Staff, 46% Cost Cut

Enterprise efficiency without enterprise complexity—real ROI from day one.

— Leonardo Antunez, Codyas

SOC 2 Type 2 Certified

Zero data egress. Only metadata reaches the cloud. Your metrics stay on your infrastructure.

Full Coverage
800+ Collectors

Auto-discovered and configured. No manual setup required.

Any Notification Channel

Slack, PagerDuty, Teams, email, webhooks—all built-in.

Built for the People Who Get Paged

Because 3am alerts deserve instant answers, not hour-long hunts.

Every Industry Has Rules. We Master Them.

See how healthcare, finance, and government teams cut monitoring costs 90% while staying audit-ready.

Monitor Any Technology. Configure Nothing.

Install the agent. It already knows your stack.
From Our Users
"A Rare Unicorn"

Netdata gives more than you invest in it. A rare unicorn that obeys the Pareto rule.

— Eduard Porquet Mateu, TMB Barcelona

99% Downtime Reduction

Reduced website downtime by 99% and cloud bill by 30% using Netdata alerts.

— Falkland Islands Government

Real Savings
30% Cloud Cost Reduction

Optimized resource allocation based on Netdata alerts cut cloud spending by 30%.

— Falkland Islands Government

46% Cost Cut

Reduced monitoring staff by 67% while cutting operational costs by 46%.

— Codyas

Real Coverage
"Plugin for Everything"

Netdata has agent capacity or a plugin for everything, including Windows and Kubernetes.

— Eduard Porquet Mateu, TMB Barcelona

"Out-of-the-Box"

So many out-of-the-box features! I mostly don't have to develop anything.

— Simon Beginn, LANCOM Systems

Real Speed
Troubleshooting in 30 Seconds

From 2-3 minutes to 30 seconds—instant visibility into any node issue.

— Matthew Artist, Nodecraft

20% Downtime Reduction

20% less downtime and 40% budget optimization from out-of-the-box monitoring.

— Simon Beginn, LANCOM Systems

Pay per Node. Unlimited Everything Else.

One price per node. Unlimited metrics, logs, users, and retention. No per-GB surprises.

Free tier—forever
No metric limits or caps
Retention you control
Cancel anytime
> See pricing plans

What's Your Monitoring Really Costing You?

Most teams overpay by 40-60%. Let's find out why.

Expose hidden metric charges
Calculate tool consolidation
Customers report 30-67% savings
Results in under 60 seconds
> See what you're really paying

Your Infrastructure Is Unique. Let's Talk.

Because monitoring 10 nodes is different from monitoring 10,000.

On-prem & air-gapped deployment
Volume pricing & agreements
Architecture review for your scale
Compliance & security support
> Start a conversation

Monitoring That Sells Itself

Deploy in minutes. Impress clients in hours. Earn recurring revenue for years.

30-second live demos close deals
Zero config = zero support burden
Competitive margins & deal protection
Response in 48 hours
> Apply to partner

Per-Second Metrics at Homelab Prices

Same engine, same dashboards, same ML. Just priced for tinkerers.

Community: Free forever · 5 nodes · non-commercial
Homelab: $90/yr · unlimited nodes · fair usage
> Get the Homelab Plan

$1,000 Per Referral. Unlimited Referrals.

Your colleagues get 10% off. You get 10% commission. Everyone wins.

10% of subscriptions, up to $1,000 each
Track earnings inside Netdata Cloud
PayPal/Venmo payouts in 3-4 weeks
No caps, no complexity
> Get your referral link
Cost Proof
40% Budget Optimization

"Netdata's significant positive impact" — LANCOM Systems

Calculate Your Savings

Compare vs Datadog, Grafana, Dynatrace

Savings Proof
46% Cost Reduction

"Cut costs by 46%, staff by 67%" — Codyas

30% Cloud Bill Savings

"Reduced cloud bill by 30%" — Falkland Islands Gov

Enterprise Proof
"Better Than Combined Alternatives"

"Better observability with Netdata than combining other tools." — TMB Barcelona

Real Engineers, <24h Response

DPA, SLAs, on-prem, volume pricing

Why Partners Win
Demo Live Infrastructure

One command, 30 seconds, real data—no sandbox needed

Zero Tickets, High Margins

Auto-config + per-node pricing = predictable profit

Homelab Ready
Free Video Course

8-episode Netdata tutorial by LearnLinux.tv

76k+ GitHub Stars

3rd most starred monitoring project

Worth Recommending
Product That Delivers

Customers report 40-67% cost cuts, 99% downtime reduction

Zero Risk to Your Rep

Free tier lets them try before they buy

AI Support Assistant, Available 24/7

Nedi has access to all official documentation, source code, and resources. Ask any question about Netdata—responds in your language.

Deployment & configuration
Troubleshooting & sizing
Alerts & notifications
Evidence-based answers
> Ask Nedi now

Never Fight Fires Alone

Docs, community, and expert help—pick your path to resolution.

Learn.netdata.cloud docs
Discord, Forums, GitHub
Premium support available
> Get answers now

60 Seconds to First Dashboard

One command to install. Zero config. 850+ integrations documented.

Linux, Windows, K8s, Docker
Auto-discovers your stack
> Read our documentation

76,000+ Engineers Strong

615+ contributors. 1.5M daily downloads. One mission: simplify observability.

Per-Second. 90% Cheaper. Data Stays Home.

Side-by-side comparisons: costs, real-time granularity, and data sovereignty for every major tool.

See why teams switch from Datadog, Prometheus, Grafana, and more.

> Browse all comparisons
Edge-Native Observability, Born Open Source
Per-second visibility, ML on every metric, and data that never leaves your infrastructure.
Founded in 2016
615+ contributors worldwide
Remote-first, engineering-driven
Open source first
> Read our story
Promises We Publish—and Prove
12 principles backed by open code, independent validation, and measurable outcomes.
Open source, peer-reviewed
Zero config, instant value
Data sovereignty by design
Aligned pricing, no surprises
> See all 12 principles
Edge-Native, AI-Ready, 100% Open
76k+ stars. Full ML, AI, and automation—GPLv3+, not premium add-ons.
76,000+ GitHub stars
GPLv3+ licensed forever
ML on every metric, included
Zero vendor lock-in
> Explore our open source
Build Real-Time Observability for the World
Remote-first team shipping per-second monitoring with ML on every metric.
Remote-first, fully distributed
Open source (76k+ stars)
Challenging technical problems
Your code on millions of systems
> See open roles
Meet the Team Behind Netdata
Conferences, meetups, and tradeshows where you can see Netdata in action and talk to the engineers who build it.
Live demos and deep dives
Book 1-on-1 meetings
Talks and panel sessions
Event recaps and photos
> See all events
Talk to a Netdata Human in <24 Hours
Sales, partnerships, press, or professional services—real engineers, fast answers.
Discuss your observability needs
Pricing and volume discounts
Partnership opportunities
Media and press inquiries
> Book a conversation
Your Data. Your Rules.
On-prem data, cloud control plane, transparent terms.
Trust & Scale
76,000+ GitHub Stars

One of the most popular open-source monitoring projects

SOC 2 Type 2 Certified

Enterprise-grade security and compliance

Data Sovereignty

Your metrics stay on your infrastructure

Validated
University of Amsterdam

"Most energy-efficient monitoring solution" — ICSOC 2023, peer-reviewed

ADASTEC (Autonomous Driving)

"Doesn't miss alerts—mission-critical trust for safety software"

Community Stats
615+ Contributors

Global community improving monitoring for everyone

1.5M+ Downloads/Day

Trusted by teams worldwide

GPLv3+ Licensed

Free forever, fully open source agent

Why Join?
Remote-First

Work from anywhere, async-friendly culture

Impact at Scale

Your work helps millions of systems

Databases

Garbage Collection In Java What It Is and How It Works

Understanding the automatic memory management that powers the JVM
by Netdata Team · June 9, 2025

One of the most powerful features of the Java platform is its automatic memory management. Unlike languages like C or C++, where developers must manually allocate and deallocate memory, Java handles this process for you through a process called garbage collection (GC). This frees developers to focus on application logic rather than the complexities of memory management, which is a major reason for Java’s enduring popularity.

But what exactly is garbage collection in Java, and how does it work under the hood? While it’s an automatic process, a solid understanding of the Java garbage collector is crucial for writing high-performance, stable applications and for troubleshooting memory-related issues like the dreaded OutOfMemoryError.

This article will explore the fundamentals of JVM garbage collection, including its mechanisms, the different types of garbage collectors available, and best practices for optimizing your application’s memory usage.

The Problem: Managing Memory on the Heap

When you run a Java application, the Java Virtual Machine (JVM) allocates a region of memory called the heap. Every time your code creates a new object using the new keyword, that object is stored on the heap.

This is simple enough, but what happens when an object is no longer needed? For example, once a method finishes executing, any variables local to that method go out of scope. Without a mechanism to clean up, this unused object would occupy memory indefinitely. If this happened repeatedly, the heap would eventually fill up, and the application would crash with an OutOfMemoryError.

This is where the garbage collector steps in. Its job is to automatically identify and delete these unused objects, freeing up memory for new ones.

How Does Garbage Collection Work in Java?

The core principle behind Java garbage collection is to identify objects that are no longer “reachable” by the application. An object is considered reachable if it’s referenced by a “GC Root.” GC Roots are special objects that are always accessible, such as:

  • Objects in the current thread’s call stack (i.e., local variables and parameters in currently executing methods).
  • Static variables of classes.
  • Objects used for synchronization.

The garbage collector starts at these roots and traverses the entire graph of object references. Any object it can reach during this traversal is considered “live.” Any object it cannot reach is considered “garbage” and is eligible for collection.

The Mark-and-Sweep Algorithm

Most modern Java garbage collectors use a variation of an algorithm called “Mark-and-Sweep.” This process happens in two main phases:

  1. Mark Phase: The garbage collector traverses the object graph starting from the GC Roots. Every live object it encounters is “marked” as being in use.
  2. Sweep Phase: After the marking is complete, the collector scans the entire heap. Any object that was not marked during the first phase is now known to be unreachable. The collector “sweeps” them away, deallocating their memory and returning it to the free memory pool.

Some collectors add a third phase, Compaction, where they move all the remaining live objects together. This reduces memory fragmentation and makes it faster to allocate memory for new objects.

Generational Garbage Collection: The “Weak Generational Hypothesis”

To make this process more efficient, the JVM employs a strategy called generational garbage collection. This strategy is based on an empirical observation known as the “weak generational hypothesis,” which states that most objects die young. In other words, the majority of objects created in an application become unreachable very quickly.

To take advantage of this, the JVM divides the heap into different “generations”:

  • Young Generation: This is where all new objects are initially allocated. The Young Generation itself is further divided into an Eden space and two Survivor spaces (S0 and S1).
  • Old Generation (or Tenured Generation): Objects that survive multiple garbage collection cycles in the Young Generation are eventually “promoted” to the Old Generation.

This separation allows the JVM to use different collection strategies for each generation:

  • Minor GC: This process cleans up the Young Generation. Because most objects here are expected to be garbage, Minor GCs are frequent and very fast.
  • Major GC (or Full GC): This process cleans up the Old Generation. Since objects here have already proven to be long-lived, Major GCs happen much less frequently but are typically slower and more resource-intensive as they have to scan a larger portion of the heap.

This generational approach significantly improves performance. The collector can focus its efforts on the Young Generation, where it gets the most “bang for its buck,” reclaiming large amounts of memory quickly without having to pause the application for long periods to scan the entire heap.

Types of Java Garbage Collectors

The JVM provides several different garbage collectors, each with its own characteristics and trade-offs. You can choose the best one for your application’s specific workload.

  • Serial GC: This is a simple, single-threaded collector. It pauses the entire application (a “stop-the-world” event) to perform garbage collection. It’s suitable for single-processor machines or applications with very small heaps, but it’s rarely used in modern server-side applications.
  • Parallel GC: Also known as the “throughput collector,” this is the default collector in many versions of the JVM. It uses multiple threads to perform garbage collection, which speeds up the process significantly. However, it still causes “stop-the-world” pauses, making it best for backend applications where throughput is more important than low latency.
  • Concurrent Mark Sweep (CMS) Collector: This collector was designed to minimize pause times by doing most of its work concurrently with the application threads. It’s known as a “low-pause” collector. While it reduces pauses, it can use more CPU and is now deprecated in favor of G1.
  • Garbage-First (G1) GC: The G1 collector is the modern, all-purpose collector designed to replace CMS. It divides the heap into many small regions and prioritizes collecting the regions with the most garbage first (hence the name). It provides a good balance between throughput and low pause times, making it a great default choice for most server-side applications.
  • ZGC and Shenandoah: These are the newest, ultra-low-latency garbage collectors designed for applications with massive heaps (from hundreds of gigabytes to terabytes) that require extremely short pause times (typically in the sub-millisecond range).

Interacting with the Garbage Collector

While garbage collection in Java is automatic, there are ways to interact with it, though they should be used with caution.

Can You Force Garbage Collection?

A common question is whether you can force garbage collection in Java. The answer is no, not directly. You can request that the GC run by calling System.gc() or Runtime.getRuntime().gc(), but this is merely a suggestion. The JVM is free to ignore the request.

In general, you should almost never call System.gc() in your production code. The JVM’s sophisticated heuristics are far better at determining the optimal time to run the GC than a manual trigger. Explicitly calling it can lead to unnecessary and performance-degrading GC cycles.

Making an Object Eligible for GC

Instead of trying to force collection, your goal should be to help the collector by ensuring objects are eligible for collection as soon as they are no longer needed. The primary way to do this is to remove all references to the object. Common ways to do this include nullifying a reference variable after it’s used, re-assigning the variable to a new object, or simply letting an object created within a method go out of scope when the method completes.

This is the foundation of good memory management in Java: manage your object references effectively, and let the garbage collector do its job.

The Importance of Garbage Collection Monitoring

Long garbage-collection time is a common cause of performance problems in Java applications. When the GC runs, especially during a Major GC cycle, it can pause your application, leading to high response times and a poor user experience.

Therefore, monitoring your application’s garbage collection behavior is critical. By analyzing GC logs or using a monitoring tool, you can answer important questions:

  • How frequently are Minor and Major GCs occurring?
  • How long are the GC pause times?
  • How much memory is being reclaimed in each cycle?
  • Is the heap size appropriate for the application’s memory footprint?

This data is essential for tuning the JVM and the garbage collector for optimal performance. An observability tool like Netdata can give you real-time visibility into JVM metrics, including heap usage and GC performance, helping you spot trends and diagnose issues before they impact your users.

Understanding how Java garbage collection works is a key skill for any serious Java developer. By writing memory-conscious code and monitoring GC performance, you can build applications that are not only functional but also stable, efficient, and highly performant.

Ready to gain deep, real-time insights into your JVM’s performance? Sign up for Netdata for free and start monitoring your Java applications and their garbage collection behavior in minutes.