Xurtle


  • 首页

  • 分类

  • 归档

  • 标签

Hotspot虚拟机- 垃圾收集算法和垃圾收集器

发表于 2016-10-02   |   分类于 Java   |  

引言

当提到Java虚拟机的时候,我们首先应该区分2件事情。一个是抽象的Java虚拟机规范,另一个是根据这个规范具体的实现。市面上有很多根据这个规范实现的虚拟机,比如jRockit、IBM J9、Hotspot等。那么在这篇文章中,我只介绍关于Hotspot虚拟机的行为,以及它里面提供的垃圾收集器。

什么是垃圾收集?

相信每一个现实中生活的人都知道什么是垃圾收集。顾名思义,就是找到没有用的东西(垃圾)并把它扔掉。但是,在JVM中的垃圾收集是完全相反的,它首先找到所有仍然使用的对象并标记下来,然后清理掉没有标记的垃圾。

那么对于一个垃圾收集器来说,它主要有三个工作需要完成:

  1. 分配内存
  2. 确保任何被引用的对象在内存中,不被垃圾收集器收集
  3. 释放不再使用的对象的内存

被引用的对象我们称它是活着的(live),不再被引用的对象我们称它为死的(dead),或垃圾。找到并释放这些垃圾的过程叫做垃圾收集。

阅读全文 »

设计模式之strategy pattern

发表于 2016-09-30   |   分类于 设计模式   |  

strategy pattern的定义

  • 定义一组算法,分别封装起来,让它们之间可以互相替换。Strategy pattern让算法的变化独立于使用它的客户端。
  • 在接口中定义抽象,在它的derived类中实现相应的细节。

在面向对象程序设计中,其中一个重要的原则就是针对接口编程,不要去针对实现编程。 下图说明了怎样实现这个原则:

strategy pattern

从上图可以看出:在接口中封装抽象,在它的derived类中实现相应的细节。Client针对接口编程,当derived类的数量改变时,Client代码不受影响;当derived类的实现细节改变时,Client代码同样也不受影响。

利用strategy pattern可以很好地针对这样的原则去编程。下面我来用具体的代码举个例子。

阅读全文 »
12
Xurtle

Xurtle

做尽人事 才可以看天命

5 日志
2 分类
11 标签
GitHub 微博
© 2017 Xurtle
由 Hexo 强力驱动
主题 - NexT.Pisces