原文地址PSYoungGen /PSOldGen/PSPermGen解释 - 码农教程
PSYoungGen /PSOldGen/PSPermGen解释
本文章向大家介绍PSYoungGen /PSOldGen/PSPermGen解释,主要包括PSYoungGen /PSOldGen/PSPermGen解释使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
args: -XX:+PrintGCDetails -Xms20m -Xmx20m -Xmn10m
Heap PSYoungGen total 9216K, used 5423K
[0x00000007ff600000, 0x0000000800000000, 0x0000000800000000) eden space 8192K,
66% used [0x00000007ff600000,0x00000007ffb4bea8,0x00000007ffe00000) from space 1024K,
0% used [0x00000007fff00000,0x00000007fff00000,0x0000000800000000) to space 1024K,
0% used [0x00000007ffe00000,0x00000007ffe00000,0x00000007fff00000)
ParOldGen total 10240K, used 0K [0x00000007fec00000, 0x00000007ff600000, 0x00000007ff600000)
object space 10240K, 0% used [0x00000007fec00000,0x00000007fec00000,0x00000007ff600000) PSPermGen total 21504K,
used 2920K [0x00000007f9a00000, 0x00000007faf00000, 0x00000007fec00000) object space 21504K,
13% used [0x00000007f9a00000,0x00000007f9cda2f0,0x00000007faf00000)
- PSYoungGen:新生代情况
- PSOldGen:老年代情况,占用空间10240K,10M,这个是老年代的活跃数据情况
- PSPermGen:永久带情况,占用空间21504K,21M,它是永久带的活跃数据大小
- Eden Space (heap): 内存最初从这个线程池分配给大部分对象。
- Survivor Space (heap):用于保存在eden space内存池中经过垃圾回收后没有被回收的对象。
- Tenured Generation (heap):用于保持已经在 survivor space内存池中存在了一段时间的对象。
- Permanent Generation (non-heap): 保存虚拟机自己的静态(refective)数据,例如类(class)和方法(method)对象。Java虚拟机共享这些类数据。这个区域被分割为只读的和只写的,
- Code Cache (non-heap):HotSpot Java虚拟机包括一个用于编译和保存本地代码(native code)的内存,叫做“代码缓存区”(code cache)
详细信息区域给出一些当前线程的信息: Used :已使用:当前的内存使用量。使用的内存包括所有对象(能被获取和不能被获取的)所占用的内存。
Committed :分配量:Java虚拟机保证能够获取到的内存量。分配内存(committedmemory)的量可能随时间改变。Java虚拟机可能释放部分这里的内存给系统,相应的分配的内存这时可能少于初始化时分配的给它的量。分配量总数大于或等于已使用的内存量。
Max :内存管理系统可以使用的最大内存量。这个值可以被改变或者不做设定。如果JVM试图增加使用的内存到大于分配量(committedmemory)的情况,内存分配可能失败,即便想使用的内存量小于或者等于最大值(如:系统虚拟内存比较低时)
Usage Threshold The usage threshold of a memory pool. This field will only beshown if the memory pool supports usage threshold. GC time :垃圾回收使用的总时间和调用垃圾回收的次数。它可能有好几行,每行代表JVM使用的垃圾回收算法