随笔分类 -  jvm

摘要:1.标记清除算法: 分为两步 “标记” 和 “清除” 两个阶段。标记阶段在《对象已死吗》一文已经介绍过。 这个算法主要有两个不足:一是效率问题,“标记”和“清除”两个过程效率都不高,二是空间问题,标记清除之后会产生大量不连续的内存碎片,内存碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无 阅读全文
posted @ 2016-03-07 13:00 张-晓 阅读(149) 评论(0) 推荐(0)
摘要:为什么要讨论这个问题呢? 在堆里面存放着java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还“存活”着,哪些已经“死去”(即不可能再被任何途径使用的对象)。 下面有几种算法判断对象是否已经死去。(注意是判断对象是否可回收的算法,并不是回收算法) 1.引 阅读全文
posted @ 2016-03-02 00:23 张-晓 阅读(373) 评论(0) 推荐(0)
摘要:方法区与java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的 类信息,常量,静态变量,即时编译器编译后的代码等数据。也称其为永久代。 运行时常量池是方法区的一部分。Class文件除了有类的版本,字段,方法,接口等描述信息外,还有一项信息是常量池,用于存放比那一起生成的各种 字面量 和 阅读全文
posted @ 2016-03-01 22:39 张-晓 阅读(2173) 评论(0) 推荐(0)
摘要:目前内存的动态分配与内存回收技术已经相当成熟,那为什么我们还要去了解GC和内存分配呢?答案很简单:当需要排查各种内存溢出,内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。 有三部分内存区域:程序计数器,虚拟机栈,本地方法栈,它们随线程而 阅读全文
posted @ 2016-02-29 22:41 张-晓 阅读(268) 评论(0) 推荐(0)
摘要:6.2 无关性的基石 标题为什么是无关性基石呢。时至今日,商业机构和开源机构已经在java语言之外发展出一大批在java虚拟机上运行的语言。如Clojure,Groovy,Scala等。 java虚拟机不和包括java在内的任何语言绑定,它只与“Class文件”这种特定的二进制文件格式有所关联。 j 阅读全文
posted @ 2016-02-26 23:37 张-晓 阅读(249) 评论(0) 推荐(0)