jvm虚拟机栈:一个是线程独有的,每次启动一个线程,就创建一个jvm虚拟机栈,线程退出的时候就销毁。这里面主要保存线程本地变量名和局部变量值。本地方法栈:调用本地jni方法的时候而创建的。这里分配的jvm之外的内存空间。方法调用结束之后销毁。pc寄存器:这个保存线程当前..
分类:
其他好文 时间:
2014-09-09 13:48:59
阅读次数:
227
基本回收算法 1. 引用计数(Reference Counting)比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。2. 标记-清除(Mark-Sweep)此算法执行分两阶段。第一阶段...
分类:
其他好文 时间:
2014-09-09 10:36:38
阅读次数:
205
先看一眼JVM虚拟机运行时的内存模型:
1.方法区 Perm(永久代、非堆)
2.虚拟机栈
3.本地方法栈 (Native方法)
4.堆
5.程序计数器
1 首先的问题是:jvm如何知道那些对象需要回收 ?
目前两种标识算法、三种回收算法、两种清除算法、三种收集器
引用计数法
每个对象上都有一个引用计数,对象每被引用一次,引...
分类:
其他好文 时间:
2014-09-07 21:13:05
阅读次数:
363
注意:垃圾回收回收的是无任何应用对象占据的内存空间,而不是对象本身在jvm中堆空间划分为三个代:年轻代(Young Generation)、年老代(Old Generation)和永久代(Permanent Generation)。年轻代和年老代是存储动态产生的对象。永久带主要是存储的是java的类...
分类:
其他好文 时间:
2014-08-29 17:56:38
阅读次数:
192
最近学习了JVM的相关知识,主要是关于HosSpot的,这里大致整理一下。1.HotSpotJVM的结构上图描述HotSpot的大致结构,从图中我们可以看出JVM的大致流程是把一个class文件通过类加载器加载进系统,然后把放到不同的区域,通过编译器编译。2.Heap结构做过java的都知道,java的堆分..
分类:
其他好文 时间:
2014-08-19 11:09:45
阅读次数:
262
jvm的垃圾回收主要是针对java堆这块内存空间,因为java的虚拟栈是随着线程的销毁而自动回收的,而方法区的垃圾回收条件极其苛刻。java堆中存放着运行期间的对象实例,随着程序的运行实例越来越多,不回收垃圾就会产生OOM异常,而怎么判断一个对象是否是垃圾呢,下面是几种常用..
分类:
其他好文 时间:
2014-08-19 11:09:05
阅读次数:
197