jvm
风一样的自在
这个作者很懒,什么都没留下…
展开
-
类加载
1、ClassLoader 是一个抽象类,定义了一些重要的方法,可以通过子类来扩展某些接口方法。有一个parent属性,称为双亲。2、ClassLoader 有四种,自定义 应用 扩展 启动类加载器3、双亲委派模型描述的是 判断某类是不是已经加载? 先自底往上询问加载器,你有没有加载过这个类,如果加载了就暂停询问,返回。如果到了启动类加载器还没有加载,那么就从启动类加载器开始进行加载,如...原创 2018-08-03 16:43:35 · 149 阅读 · 0 评论 -
G1收集器
G1 收集器jdk1.7 正式使用 替换CMS方案特点: 并行:多个GC线程同时工作 并发:与应用程序交替执行 分代GC:兼顾新生代 和 老年代 空间整理:每次GC之后都会复制对象。进行空间整理,减少空间碎片 可预见性:缩小了回收范围,从而可控全局停顿G1收集过程:新生代GC:eden 区清空,收集部分survivor区数据。并发标记周期(为了降低一次停顿时间) 初...原创 2018-08-03 10:54:27 · 160 阅读 · 0 评论 -
垃圾回收器 CMS
CMS 关注在系统停顿时间 使用标记算法 CMS(concurrent mark sweep 并发标记清除) 运用在老年代区域主要工作步骤:初始标记 并发标记 重新标记 并发清除初始标记和重新标记这两个步骤仍然需要暂停Java执行线程,初始标记只是标记GC Roots能够关联到的对象,并发标记就是执行GC Roots Tracing的过程,而重新标记就是为了修正并发标...原创 2018-08-03 10:56:08 · 136 阅读 · 0 评论 -
静态分配和动态分配
分派是java三大特性中 (封装 继承 多态 )多态的一种体现,多态包含重载和重写,重载是静态分派 重写是动态分派这里所说的静态分派和动态分派其实就是方法调用的一种方式,除此还有解析调用(一般性的调用,在jvm 加载类的时候符号引用转化我直接引用)静态分派举例子:原因就是 静态分派 他实际上 使用的是编译类型动态分派:举例子:重写 那重写虚拟机是怎么实现的? invokev...原创 2018-08-03 11:12:08 · 3488 阅读 · 0 评论 -
虚拟机常用参数
堆设置 o -Xms:初始堆大小 o -Xmx:最大堆大小 o -XX:NewSize=n:设置年轻代大小 o -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 o -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Ede...原创 2018-08-03 15:24:23 · 455 阅读 · 0 评论 -
Jvm 性能调优
堆栈溢出(设置栈空间太小,导致栈溢出) -Xss256k 每个线程堆栈空间太小,导致溢出 -Xss256k这个参数调整了,可能会影响trace的调用。 报如下错误: Java.lang.StackOverflowError at net.sf.jsqlparser.util.deparser.ExpressionDeParser.visitBinaryExpression(Expressi...原创 2018-08-03 15:44:24 · 350 阅读 · 0 评论