search
HomeJavajavaTutorialWhat are the common garbage collectors for java performance optimization?

Common garbage collectors and algorithms

I believe you can learn a lot about garbage collectors through the other two articles I provided. The garbage collectors that we really need to pay attention to and may even use are the following four types:

serial serial garbage collector

If it is a virtual type of client machine or on a single-core server, this garbage collector will become the default garbage collector. Whether it is Minor GC or Full GC, all application threads will be suspended. Serial Old is used in the old generation, which is also a single-threaded old generation version.

Client-type virtual machine, we mentioned earlier that the compilation type is divided into client and server. JVM will compile the code into bytecode recognized by JVM through the client compiler (single thread).

can be represented by the following flags:

    -XX:+UseSerialGC

Parallel multi-threaded garbage collector

On server-type virtual machines or multi-threaded servers, jdk8 defaults The type of garbage collector to use.

Both Minor GC and Full GC use multi-threading to collect garbage. Both types of GC will cause the application thread to pause. But it has more throughput and is the most suitable garbage collector when there are no excessive requirements on response time.

You can check its status through the following flags:

Young generation:

-XX:+UseParallelGC

Old generation:

-XX:+UseParallelOldGC

CMS collector

Its original design is to reduce the long-term system lag caused by serial and parallel collectors during recycling.

It will also suspend all application threads when Minor GC occurs. The difference is that the young generation does not use parallel or serial, but uses a young generation collector specially adapted to CMSParNew.

You can view it through the following signs:

-XX:+UseParNewGC

CMS no longer suspends all application threads when Full GC occurs, but uses multi-threading to run at the same time as the application threads. , clean up objects that are no longer in use. This greatly reduces the pause time of the CMS garbage collector. Extremely obvious compared to Parellel collector.

Disadvantages:

  • CMS needs to occupy more CPU resources to ensure that when the application thread is running, the gc thread continuously scans the heap space.

  • The memory will not be compressed and organized, resulting in memory fragmentation.

If there are not enough CPU resources, or memory fragmentation reaches the limit, it will degenerate into a serial collector.

can be viewed through the following flags:

-XX:+UseConcMarkSweepGC

G1 collector

can also be called garbage priority collector( garbage first).

The original design is to minimize the lag that occurs when processing extremely large heaps (4gb). G1 still belongs to the generational collector, but the difference is that it is logical generation. G1 divides the heap space into several regions (Regions). Garbage collection in the new generation still uses the method of pausing all application threads to copy surviving objects to the old generation or Survivor space. The old generation is also divided into many areas, and the G1 collector completes the cleanup work by copying objects from one area to another. This solves the problem of memory fragmentation in CMS.

Same as CMS, G1 is also a concurrent collector. When Full GC occurs in the old generation, the background thread completes the recycling work without pausing the application thread.

View through the following logo:

-XX:+UseG1GC

In fact, the above content is a simple description. For the real implementation details, please see the article provided at the beginning.

Explicit garbage collection

The explicit garbage collection mentioned here actually refers to manually triggered garbage collection, as shown below:

System.gc;

This is a way to control and force the jvm to have gc. It is not recommended to use this method for garbage collection at any time.

When you use this specification, no matter what kind of garbage collector, even CMS or G1, Full GC will occur and all application threads will be stopped at the same time, which will cause lag for a long period of time.

Exceptions:

  • Performance analysis, testing

  • Heap analysis

In the above situation, calling System.gc will better help us analyze the problems of the current application.

The above is the detailed content of What are the common garbage collectors for java performance optimization?. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:亿速云. If there is any infringement, please contact admin@php.cn delete
How do I use Maven or Gradle for advanced Java project management, build automation, and dependency resolution?How do I use Maven or Gradle for advanced Java project management, build automation, and dependency resolution?Mar 17, 2025 pm 05:46 PM

The article discusses using Maven and Gradle for Java project management, build automation, and dependency resolution, comparing their approaches and optimization strategies.

How do I create and use custom Java libraries (JAR files) with proper versioning and dependency management?How do I create and use custom Java libraries (JAR files) with proper versioning and dependency management?Mar 17, 2025 pm 05:45 PM

The article discusses creating and using custom Java libraries (JAR files) with proper versioning and dependency management, using tools like Maven and Gradle.

How do I implement multi-level caching in Java applications using libraries like Caffeine or Guava Cache?How do I implement multi-level caching in Java applications using libraries like Caffeine or Guava Cache?Mar 17, 2025 pm 05:44 PM

The article discusses implementing multi-level caching in Java using Caffeine and Guava Cache to enhance application performance. It covers setup, integration, and performance benefits, along with configuration and eviction policy management best pra

How can I use JPA (Java Persistence API) for object-relational mapping with advanced features like caching and lazy loading?How can I use JPA (Java Persistence API) for object-relational mapping with advanced features like caching and lazy loading?Mar 17, 2025 pm 05:43 PM

The article discusses using JPA for object-relational mapping with advanced features like caching and lazy loading. It covers setup, entity mapping, and best practices for optimizing performance while highlighting potential pitfalls.[159 characters]

How does Java's classloading mechanism work, including different classloaders and their delegation models?How does Java's classloading mechanism work, including different classloaders and their delegation models?Mar 17, 2025 pm 05:35 PM

Java's classloading involves loading, linking, and initializing classes using a hierarchical system with Bootstrap, Extension, and Application classloaders. The parent delegation model ensures core classes are loaded first, affecting custom class loa

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.