一:Java技术体系模块图 二:JVM内存区域模型 1.方法区 也称"永久代” 、“非堆”, ?它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,可以通过-XX...
分类:
编程语言 时间:
2015-05-15 16:00:57
阅读次数:
134
很多人认为方法区(或者HotSpot虚拟机中的永久代)是没有垃圾收集的,Java虚拟机规范中确实说过可以不要求虚拟机在方法区实现垃圾收集,而且在方法区进行垃圾收集的“性价比”一般比较低:在堆中,尤其是在新生代中,常规应用进行一次垃圾收集一般可以回收70%~95%的空间,而永久代的垃圾收集效率远低于此。
永久代的垃圾收集主要回收两部分内容:废弃常量和无用的类。
先来说说方法区内常量池之中...
分类:
其他好文 时间:
2015-05-05 22:02:42
阅读次数:
157
JVM内存板块分为5大块:JAVA堆、永久代、栈空间、本地方法栈、Cheap。JAVA堆:又名Heap区,包括Young、old两大板块永久代:、栈空间:运行时线程私有栈空间本地方法栈:C部分的代码区域Cheap:非java区域的内存使用,有些JNI的调用会用到堆内存Yong空间分为3个板块:1个Eden+2..
分类:
编程语言 时间:
2015-04-20 09:42:42
阅读次数:
176
工具:jstatjmapjhat1.jstat查看gc情况S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used)EC、EU:Eden区容量和使用量OC、OU:年老代容量和使用量PC、PU:永久代容量和使用量YGC、YGT:年轻代GC次数和GC耗时FGC...
分类:
其他好文 时间:
2015-03-21 01:02:28
阅读次数:
552
线上java应用报永久代(PermGen)OOM,遇到永久代OOM那就没啥办法了,只能为永久代扩容。
要做的就是改大PermSize这个参数。发现这个实例的启动参数里并没有PermSize的定义。那么这个实例一定是用的永久代的默认大小。永久代的默认大小是多少呢?百度的一下,JDK1.6的默认大小是82M。果真如此吗?在这个实例执行 stat
-gccapacity pid ,命令结...
分类:
编程语言 时间:
2015-03-09 20:54:43
阅读次数:
178
一:Java技术体系模块图 二:JVM内存区域模型 1.方法区 也称"永久代” 、“非堆”, ?它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,可以通过-XX...
分类:
其他好文 时间:
2015-03-03 13:47:19
阅读次数:
132
Java Heap和Method Area是JVM中内存占用最大的区域,也是监控和调优的重点。 下图使用jvisualvm工具截取,Perm是永久代(Permanent Generation)、Old是年老代(Old Generation)、Eden Space 和S0+S1是年轻代(Y...
分类:
数据库 时间:
2014-12-10 18:19:13
阅读次数:
254
JVM区域总体分两类,heap区和非heap区。heap区又分:Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。 非heap区又分:Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(j...
分类:
其他好文 时间:
2014-12-03 12:40:30
阅读次数:
302
Java8_从Permanent Generation到Metaspace Java8已经移除了永久代(Permanent Generation)的内存区域,而出现了新的内存区域元空间(Metaspace)。 Permanent Generation 这块内存主要保存什么? So the Java cl...
分类:
编程语言 时间:
2014-10-26 21:23:43
阅读次数:
331
方法区和运行时常量池溢出由于运行时常量池是方法区的一部分,因此这两个区域的溢出测试就放在一起进行。前面提到JDK 1.7开始逐步“去永久代”的事情,在此就以测试代码观察一下这件事对程序的实际影响。String.intern()是一个Native方法,它的作用是:如果字符串常量池中已经包含一个等于此S...
分类:
其他好文 时间:
2014-09-24 11:49:36
阅读次数:
272