- Java 11 and 12:New Features
- Mala Gupta
- 420字
- 2021-07-02 12:27:06
G1 memory
G1 divides the memory into regions—that is, the Eden, Survivor, and Old generation regions—this is typically about 2,048 in the count (or as close to this as possible). A region is the memory space used to store objects of different generations, without requiring them to be allocated contiguously. The size of each region depends on the memory size. All the Eden and Survivor regions are together referred to as the young generation, and all the Old regions are referred to as the old generation. The size of the regions is calculated as X to the power of 2, where X is between 1 MB and 64 MB. G1 also defines the Humongous memory regions for large objects, whose size is greater than 50% of the size of the Eden regions. Since these regions are not allocated contiguously, here's how your memory might look with G1 GC:

New objects are allocated in the Eden regions. During a young collection, a G1 GC moves the live objects from the Eden regions to the Survivor regions. Objects in the Survivor region are moved to the Old region if they have lived long enough (this is specified by using XX:MaxTenuringThreshold), or until they are collected.
A young collection collects, evacuates, and compacts objects to the Survivor regions from the Eden regions. A mixed collection, as the name suggests, will include a select set of Eden and Old regions. A mixed collection works by collecting objects quickly and frequently so that the Eden and Survivor regions are freed up as soon as they can be.
When an object is more than 50% of the size of a region, it is allocated to the Humongous region—a contiguous set of regions in the Old generation regions. A Humongous region is not allocated in the Eden regions in order to keep the cost of copying or evacuating it low.
When young and mixed collections can no longer reclaim enough memory, full GC occurs. This includes marking the live objects, preparing for compaction, adjusting pointers, and compacting the heap.
Let's work with a sample code that, apart from triggering young and mixed collections, also triggers full GC, eventually exiting the JVM due to an exhausted heap and an inability to allocate more objects.
- Web Development with Django Cookbook
- Python金融數(shù)據(jù)分析
- C/C++常用算法手冊(cè)(第3版)
- Mastering LibGDX Game Development
- Responsive Web Design by Example
- 程序員修煉之道:通向務(wù)實(shí)的最高境界(第2版)
- SQL Server從入門到精通(第3版)
- 移動(dòng)界面(Web/App)Photoshop UI設(shè)計(jì)十全大補(bǔ)
- Python語(yǔ)言實(shí)用教程
- Python項(xiàng)目實(shí)戰(zhàn)從入門到精通
- 零基礎(chǔ)學(xué)Java第2版
- 數(shù)據(jù)結(jié)構(gòu)與算法詳解
- Visual FoxPro數(shù)據(jù)庫(kù)程序設(shè)計(jì)
- Learning Node.js for Mobile Application Development
- Python Geospatial Analysis Cookbook