- 浏览: 57176 次
- 性别:
- 来自: 北京
最新评论
文章列表
触发Full GC执行的情况
- 博客分类:
- Java
除直接调用System.gc外,触发Full GC执行的情况有如下四种。
1. 旧生代空间不足
旧生代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行Full GC后空间仍然不足,则抛出如下错误:
java.lang.OutOfMemoryError: Java heap space
为避免以上两种状况引起的Full GC,调优时应尽量做到让对象在Minor GC阶段被回收、让对象在新生代多存活一段时间及不要创建过大的对象及数组。
2. Permanet Generation空间满
Permanet Generation中存放的为一些class ...
类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远远不限于类加载阶段。对于任意一个类,都需要有加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。这句话可以理解为:比较两个“类”是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使两个类来源于同一个Class文件,被同一个虚拟机记载,只要加载它们的类加载器不同,那么这两个类必定也不相等。
这里所指的“相等”,包含代表类的Class对象的equals()方法、isAssignableFrom()方法、isInst ...
Java虚拟机类加载机制(1)
- 博客分类:
- Java
描述:虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。
1.在Java语言里面,类型的加载、连 ...
类版本1
package com.classLoad.version1;
public class Version { public void testVersion() { System.out.println("我是版本1"); }}
类版本2
package com.classLoad.version2;
public class Version { public void testVersion() { System.out.println("我是版本2"); }}
...
Java垃圾收集器参数总结
UseSerialGC:
虚拟机运行在Client模式下的默认设置,打开此开关后,使用Serial + Serial Old的收集器组合进行内存回收
UseParNewGC:
打开此开关后,使用ParNew + Serial Old的收集器组 ...
gc日志分析工具
性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析。
Gc日志参数
通过在tomcat启动脚本中添加相关参数生成gc日志
...
1.当前使用的垃圾收集器
2.Java堆的大小
3.新生代和老年代的大小
4.永久代的大小
5.Minor GC的持续时间
6.Minor GC的频率
7.Minor GC的空间回收量
8.Full GC的持续时间
9.Full GC的频率
10.每个冰法垃圾收集周期的空间回收量
11.垃圾收集前后Java堆的占用量
12.垃圾收集前后新生代和老年代的占用量
13.垃圾收集器前后永久代的占用量
15.是否是老年代与永久代的占用触发了Full GC
16.应用是否显示调用了System.gc()
JAVA宕机日志信息:
Current CompileTask:
C2:8686925 133 % net.sf.jasperreports.engine.export.JRGridLayout::horizontallyMergeEmptyCells @ 18 (175 bytes)
问题分析:预览报表系统崩溃。
增加启动参数:-XX:CompileCommand=exclude,net/sf/jasperreports/engine/export/JRGridLayout,horizontallyMergeEmptyCells
目前系统没有再偶发性崩溃。