- 浏览: 73285 次
- 性别:
- 来自: 安徽
最新评论
-
shaojie92:
是每一次new的时候都会执行判断是否向RememberSet增 ...
JVM 之 OopMap 和 RememberedSet -
biyelei:
...
JVM 新生代为何需要两个 Survivor 空间? -
173806613:
Epoll模型详解 http://t.cn/RaWYhJE
【转】我读过最好的 Epoll 模型讲解 -
天在摔个:
请教下 OopMap是每个线程都有一份吗 还是说整个新生代有一 ...
JVM 之 OopMap 和 RememberedSet -
tianqiaaqq:
【转】Redis 集群之路由
文章列表
我们知道,动态代理主要基于 java.lang.reflect 包下的两个类,一个是 InvocationHandler ,一个是 Proxy 。一个简单的 Dynamic Proxy 的构造过程如下:
==================================================
public class MyInvocationHandler implements InvocationHandler {
...
以下内容部分来自网络,如有侵权,请站内联系。
Tomcat 下的工程,使用 WebappClassLoader 进行类的加载。查看 WebappClassLoader 源码,可以总结出 Tomcat 的类加载过程如下:
1. 先在自己(即当前 WebappClassLoader)的缓存中查找,有则返 ...
以下内容摘抄自周志明的《深入理解 Java 虚拟机》,自己也似懂非懂,仅仅是做个总结。
1. 加载。
1). 通过一个类的全限定名获取该类的二进制字节流;
2). 将这个字节流所代表的静态存储结构转化为方法区的运行时 ...
语法上的区别大家都知道,什么接口的方法全都得是抽象的,而抽象类允许实体方法;一个实体类只能继承一个抽象类,但可以实现多个接口;什么接口的方法必须是 public 的,抽象方法还可以用 protected 修饰,等等。
如果你只回答了这么多,那肯定不是个好消息。更窝火的是,你明明觉得肚里有货,却很难找到一个角度表达出来。下面参考了网上一些同学的回复,和我自己的理解,总结一下供大家参考。
从实际工作角度来说:
大多数情况下,接口是设计的产品,抽象类是重构的产品。
从发明它们的用意来说:
抽象类是为了把相同的东西提取出来,是为了重用;而接口的作用是制定模块之间的契约,是为了降低耦合。
我们知道,目前主流的虚拟机实现都采用了分代收集的思想,把整个堆区划分为新生代和老年代;新生代又被划分成 Eden 空间、 From Survivor 和 To Survivor 三块区域。
看书的时候有个疑问,为什么非得是两个 Survivor 空间呢?要回答这个问题,其实等价于:为什么不是0个或1个 Survivor 空间?为什么2个 Survivor 空间可以达到要求?
为什么不是0个 Survivor 空间?
这个问题等价于:为什么需要 Survivor 空间。我们看看如果没有 Survivor 空间的话,垃圾收集将会怎样进行:一遍新生代 gc 过后,不管三七二十一,活着的对象全部进 ...
前几天看周志明的《深入 Java 虚拟机》,感觉对 OopMap 和 RememberedSet 的介绍,看起来不太容易理解清楚。今天查了一些资料,并结合自己的一些猜想,把对这两种数据结构的理解写出来。目的只是为了简单易懂,而且多有推测,可能会有一些理解上的偏差,请选择性阅读。
总体而言:
OopMap 用于枚举 GC Roots ;
RememberedSet 用于可达性分析。
OopMap
OopMap 记录了栈上本地变量到堆上对象的引用关系。其作用是:垃圾收集时,收集线程会对栈上的内存进行扫描,看看哪些位置存储了 Reference 类型。如果发现某个位置确实存的是 Referenc ...
Hello iteye !
- 博客分类:
- 工作
由于百度空间将于近期关闭,现挪窝到 iteye 。
打算每天手工搬一点儿,顺便看看自己以前写的东西。
Hello iteye !