JVm相关笔记

JVm
1、-Xms20m -Xmx20M -XX:+HeapDumpOnOutOfMemoryError
    堆溢出
2、栈溢出
3、常量区溢出
4、方法区溢出:存放Class相关信息,如类名、访问修饰符、常量池、字段描述等
5.本机直接内存溢出》
 
垃圾回收
1、对象已死:引用计数器,对象被引用+1,引用失效就-1,但是不能解决循环引用问题。
2、打印GC日志:-verbose:gc -Xloggc:gc.log -XX:+PrintGCDetails
3、根搜索算法:通过一系列名为GC ROOTS的节点作为起始点,向下搜索,搜索对象走过的路径为引用链,当没有任何引用链相连,则证明不可用
GC Roots:虚拟机栈(栈的本地变量表)中引用的对象;方法区中的类静态属性引用的对象;方法区中的常量引用的对象;本地方法栈中JNI的引用对象
 
3、引用:强引用(Strong Reference):类似Object obj= new Object(),只要存在就不会被回收
软引用(Soft Reference):描述一些还有用,但是并非必须的对象,系统将要发生内存溢出异常之前,将会对这些对象进行回收,回收后依然溢出,才会抛出溢出异常。SoftReference类实现
弱引用:WeakReference类实现,此关联的对象只能生存岛下一次垃圾收集发生之前。
虚引用:PhantomRefrence类实现,唯一目的就是希望能在这个对象呗回收时受到一个系统通知。
回收方法区:判断一个类为无用的类:1、所有实例都被回收;加载该类的ClassLoader被回收;该类对于的java.lang.class对象没有任何地方被引用,无法在任何地方通过反射访问该类的方法。
 
垃圾回收器:
1、Serial收集器单线程回收,但是要停止所有的用户线程。
2.ParNew收集器:是Serial收集器的多线程版本
3、Parallel Scavenge收集器:复制算法、多线程,目标:达到一个可控制的吞吐量。
4、Serial Old收集器
5、Parallel Old收集器,JDK1.6
6、CMS收集器:集中在BS结构上,基于“标记-清除‘算法,分四步:初始标记;并发标记;重新标记;并发清除
7、G1收集器:“标记-整理”算法,不会有碎片,可以精确控制停顿
 
JDK工具:
jps:虚拟机进程状况工具;
jstat:虚拟机统计信息监视工具;jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]],例如:jstat -gc 4584 100 10 监视GC,每隔100ms,总共10次
jinfo:Java配置信息工具;D:\Program Files\Java\jdk1.6.0_23\bin>jinfo -flag MaxPermSize 4584
-XX:MaxPermSize=134217728
jmap:Java内存映像工具; Example: jmap -dump:format=b,file=heap.bin <pid>
jhat:虚拟机堆转储快照分析工具;jhat dump
jstack:Java堆栈跟踪工具;
 
JConsole
JVisualVM:下载插件:下载后的插件位于JDK _home/lib/visualvm/visualvm中
 

/Files/wasp520/JAVA虚拟机性能参数调优指导书.doc

/Files/wasp520/JVM调优总结.pdf

 
posted @ 2012-08-07 22:22  wasp  阅读(188)  评论(0)    收藏  举报