![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 70
ss36290109
这个作者很懒,什么都没留下…
展开
-
JVM学习笔记5-内存分配及回收策略
1.对象优先分配在新生代。2.大对象直接进入老年代,最典型的大对象就是很长的字符串和数组。3.长期存活的对象将进入老年代,在新生代里经历过1次GC(Survivor区得存放的下,因为超过Survivor的对象肯定是大对象了)对象年龄就+1,默认到15就进入老年代,老年代的阀值可以通过-XX:MaxTenuringThreshold=n来设置。4.动态对象年龄判定原创 2014-12-15 14:06:39 · 362 阅读 · 0 评论 -
JVM学习笔记4-垃圾收集器介绍
1.Serial收集器/Serial Old收集器Serial 收集器:单线程收集器,当GC时会 stop the world,使用复制算法。Serial Old收集器:单线程收集器,当GC时会 stop the world,只不过是用在老年代,用的是标记-整理算法。stop the world:意思是当serial收集器运行时其他处理线程全部停下来等待serial收集器G原创 2014-11-19 10:27:42 · 425 阅读 · 0 评论 -
JVM学习笔记3-垃圾收集算法
1.标记-清除算法顾名思义,就是标记待GC的对象,然后清除掉。这算法有2个问题:效率问题:标记和清除的效率都不高。空间问题:因为清除之后会有大量的不连续内存,当分配大内存对象时可能没有空间供分配。2.复制算法为了解决标记-清除算法的效率问题,复制算法是将内存分为等分的2块内存,1份使用,1份备份,当GC时就将还存活的对象复制到备份的内存,然后统一清除原本使用的另原创 2014-11-19 10:23:40 · 403 阅读 · 0 评论 -
JVM学习笔记2-对象已死?
1.在GC回收对象时需判定对象是否已死,一般判定对象已死有以下2个方法:1.1引用计数算法一个对象实例每被引用一次计数器就+1,引用失效计数器就-1,当计数器为0时就代表此对象实例没有被引用,即可GC。不过JAVA并不适合这种方法,因为解决不了对象相互循环引用的问题。PS:这里objA引用这objB,objB引用着objA,但这2个对象的引用原创 2014-11-19 10:19:52 · 448 阅读 · 0 评论 -
JVM学习笔记1-JAVA内存模型概念
1.JAVA运行时数据区域:1.1程序计数器:一个比较小的内存区域,每一个线程都有一个独立的计数器(线程私有),用来完成选取下一条所执行的字节码指令等基础功能。1.2JAVA虚拟机栈栈也是线程私有的,生命周期与线程相同,每一个方法被执行时就会创建一个栈帧用来存储方法的局部变量表、操作栈、动态链接,方法出口等。一个方法从执行到结束就是一个栈帧从虚拟机栈入栈到出原创 2014-11-14 16:32:24 · 520 阅读 · 0 评论