一 点睛
jmap -heap pid
jmap -histo pid
二 实战
1 代码
package chaper02;
import java.util.ArrayList;
/**
* -Xms60m -Xmx60m -XX:SurvivorRatio=8
* 老年代:40m
* 伊甸园:16m
* s0:2m
* s1:2m
*/
public class GCTest {
public static void main(String[] args) {
ArrayList<byte[]> list = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
byte[] arr = new byte[1024 * 100];// 100KB
list.add(arr);
try {
Thread.sleep(120);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
2 测试—— jmap -heap pid
F:\svn\19_byzb_back\branches\JVMDemo3>jmap -heap 18220
Attaching to process ID 18220, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.251-b08
using thread-local object allocation.
Parallel GC with 8 thread(s)
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 62914560 (60.0MB)
NewSize = 20971520 (20.0MB)
MaxNewSize = 20971520 (20.0MB)
OldSize = 41943040 (40.0MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 16777216 (16.0MB)
used = 518960 (0.4949188232421875MB)
free = 16258256 (15.505081176757812MB)
3.093242645263672% used
From Space:
capacity = 2097152 (2.0MB)
used = 2068752 (1.9729156494140625MB)
free = 28400 (0.0270843505859375MB)
98.64578247070312% used
To Space:
capacity = 2097152 (2.0MB)
used = 0 (0.0MB)
free = 2097152 (2.0MB)
0.0% used
PS Old Generation
capacity = 41943040 (40.0MB)
used = 12691296 (12.103363037109375MB)
free = 29251744 (27.896636962890625MB)
30.258407592773438% used
3137 interned Strings occupying 257872 bytes.
3 测试——jmap -histo pid
F:\svn\19_byzb_back\branches\JVMDemo3>jmap -histo 18220
num #instances #bytes class name
----------------------------------------------
1: 706 29426648 [B
2: 4528 433360 [C
3: 224 187592 [I
4: 4379 105096 java.lang.String
......
264: 1 16 sun.util.locale.provider.SPILocaleProviderAdapter
265: 1 16 sun.util.locale.provider.TimeZoneNameUtility$TimeZoneNameGetter
266: 1 16 sun.util.resources.LocaleData
267: 1 16 sun.util.resources.LocaleData$LocaleDataResourceBundleControl
Total 15407 30457216