java_虚拟机_gc
xinjing_wangtao
这个作者很懒,什么都没留下…
展开
-
从JVM内存管理的角度谈谈静态方法和静态属性
作者 robbin (http://hibernate.fankai.com/站长) 我试着从JVM的内存管理原理的角度来谈一下静态方法和静态属性的问题,不对的地方请指正。 JVM的内存分为两部分:stack和heap: stack(栈)是JVM的内存指令区。stack管理很简单,push一定长度字节的数据或者指令,stack原创 2016-09-10 21:30:07 · 338 阅读 · 0 评论 -
Java堆内存
Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。转载 2016-08-20 17:35:20 · 218 阅读 · 0 评论 -
垃圾收集器与内存分配策略
虚拟机如何判断对象是否存活?1.引用计数算法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。 考虑一种情形:对象objA和objB都有字段instance,赋值令objA.instance=objB和objB.instance=objA;除此之外,这两个对象再无任何引用,实际上这转载 2016-08-20 17:37:37 · 211 阅读 · 0 评论 -
JVM中的直接引用和符号引用
JVM在装载class文件的时候,会有一步是将符号引用解析为直接引用的过程。那么这里的直接引用到底是什么呢?对于指向“类型”【Class对象】、类变量、类方法的直接引用可能是指向方法区的本地指针。指向实例变量、实例方法的直接引用都是偏移量。实例变量的直接引用可能是从对象的映像开始算起到这个实例变量位置的偏移量。实例方法的直接引用可能是方法表的偏移量。在《深入java转载 2016-09-11 22:30:31 · 318 阅读 · 0 评论 -
关于Java垃圾回收机制,你所需要知道的一切
1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了转载 2016-08-23 21:29:20 · 337 阅读 · 0 评论 -
Java对象的强、软、弱和虚引用原理+结合ReferenceQueue对象构造Java对象的高速缓存器
1.Java对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果物品已经被扔到垃圾箱,想再 把它捡回来使用就不可能了。转载 2016-08-24 15:11:39 · 251 阅读 · 0 评论 -
从JVM角度看线程安全与垃圾收集
线程安全Java内存模型中,程序(进程)拥有一块内存空间,可以被所有的线程共享,即MainMemory(主内存);而每个线程又有一块独立的内存空间,即WorkingMemory(工作内存)。普通情况下,当线程需要对某一共享变量进行修改时,通常会进行如下的过程:1. 从主内存中拷贝变量的一份副本,并装载到工作内存中;2. 在工作内存中执行代码,修改副本的值转载 2016-08-25 21:23:48 · 409 阅读 · 0 评论 -
JVM学习笔记-引用(Reference)机制
如果你还不了解JVM的基本概念和内存划分,请阅读JVM学习笔记-基础知识和JVM学习笔记-内存处理文章。因为Java中没有留给开发者直接与内存打交道的指针(C++指针),所以如何回收不再使用的对象问题,就丢给了JVM。所以接下来就介绍一下目前主流的垃圾收集器所采用的算法。不过在此之前,有必要先了解Reference 1.引用(Reference)如果你现在还是J转载 2016-08-25 21:24:15 · 299 阅读 · 0 评论