`
chaisencs
  • 浏览: 8234 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论
文章列表
这个问题想了很久,脑子想迷糊了都,不知道理解得对不对。 在CMS的并发标记阶段,可能会出现两个并发问题: 第一,CMS在执行并发标记,同时,应用在修改老年代中对象的引用。这时候,老年代的引用状态会发生改变,所以CMS要想办法把这种改变记录下来。CMS使用card table来记录这些改变,把发生改变的对象所在的card标记为dirty,然后在最终标记阶段再次扫描这些标记为dirty的card。(不过这样也会产生浮动垃圾) 第二,CMS在执行并发标记,同时,新生代GC开始运行。注意,新生代GC也需要扫描上述的card table(据我理解这个card table只有一个),在扫描的时候,也是 ...
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class Test { public static void main(String[] args) { UserManager target = new UserManagerImpl(); UserManager proxy = (UserManager) Proxy.newProxyInstance(target. ...
网上关于get和load的讨论很多,下面是我的一些浅显认识。 从源码角度来讲:很简单,LoadType不同。 LoadType是LoadEventListener的内部类,源码中一共定义了7种,GET和LOAD最常用。 还有一个IMMEDIATE_LOAD(nakedEntityReturned为true)在加载代理实际数据的过程中使用。 这个类的对象在创建的时候采用了builder模式。 而GET和LOAD两种LoadType主要的区别是: GET:allowNulls为true;allowProxyCreation为false LOAD:allowNulls为f ...
Global site tag (gtag.js) - Google Analytics