
java虚拟机
文章平均质量分 54
iteye_9639
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java内存区域与内存溢出异常
java虚拟机运行时区域图: 1,程序计数器: 程序计数器可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖这个计数器来完成。 由于java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何时刻,一个处理器只会执行一条线程中的指...原创 2017-03-27 18:19:16 · 127 阅读 · 0 评论 -
怎么判断对象已死
堆中几乎存放这Java世界中所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象有哪些还"存活"着,哪些已经"死去"(即不可能再被任何途径使用的对象)。 1,引用计数算法 给对象添加一个引用计数器,每当有一个地方引用它时,计数器就加1;当引用失效时,计数器就减1;任何时刻计数器都为0的对象就是不可能再被使用的。客观地讲,引用计数法的实现简单,判定效率也高,但Java中...原创 2017-03-28 10:58:11 · 193 阅读 · 0 评论 -
再谈引用
有些对象,当内存空间还足够时,则希望能保留在内存中;如果内存在进行垃圾收集后还是非常紧张,则可以抛弃这些对象。很多系统缓存功能都符合这样的应用场景。 在JDK1.2之后,Java对引用的概念进行了扩充,将引用分为强引用,软引用,弱引用,虚引用四种,这四种引用强度依次逐渐减弱。 强引用就是指在程序代码之中普遍存在的,类似:Object obj=new Object() 这类的引用,只要强...原创 2017-03-28 11:33:00 · 140 阅读 · 0 评论 -
垃圾收集算法
1,标记-清除算法 最基础的收集算法是“标记-清除”算法,如它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有的对象。之所以所它是最基础的收集算法,是因为后续的收集算法都是基于这种思想并对其缺点进行改进而得到的。它的主要缺点有两个:一个是效率问题,标记和清除过程的效率都不高;另一个是空间问题,标记和清除之后会产生大量不连续的内存...原创 2017-03-29 10:42:57 · 92 阅读 · 0 评论 -
垃圾收集器
1. Serial 收集器 ("Serial" is a stop-the-world, copying collector which uses a single GC thread.) Serial收集器是最基本,历史最悠久的收集器,使用复制算法,在jdk 1.3.1之前是 虚拟机新生代收集的唯一选择,它是单线程的收集器,它在进行垃圾收集时,必须暂停其他所有的工作线...原创 2017-03-30 12:07:06 · 136 阅读 · 0 评论 -
内存分配与回收策略
Java技术体系中所提倡的自动内存管理最终可以归结为 自动化地解决了两个问题 : 给对象分配内存以及回收分配个对象的内存。接下来我们来讲一讲内存分配的事情。 对象的内存分配,往大方向讲,就是在堆上分配,对象主要分配在新生代的Eden上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下也可能会直接分配在老年代中。 1,对象优先在Eden分配 大多数情况下,对象...原创 2017-04-03 15:53:52 · 101 阅读 · 0 评论 -
垃圾收集器参数总结
UseSerialGC :虚拟机运行在Client模式下的默认值,打开此开关后,使用Serial+Serial Old组合进行内存回收。 UseParNewGC :打开此开关后,使用ParNew+Serial Old组合回收 UseConcMarkSweepGC:打开此开关后,使用ParNew+CMS+Serial Old 的收集器组合进行内存回收,Serial Old 收集器将作为CMS...原创 2017-04-03 17:11:59 · 136 阅读 · 0 评论