摘要: 如果说收集算法是内存回收的方法论,垃圾收集器就是内存回收的具体实现。Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、不同版本的虚拟机所提供的垃圾收集器都可能会有很大的差别,并且一般都会提供参数共用户根据自己的应用特点和需求组合出各个年代所使用的收集器1.Serial收集... 阅读全文
posted @ 2015-10-14 23:09 moonandstar08 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 一、按照基本回收策略分类1、标记-清除(Mark-Sweep) 此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。此算法需要暂停整个应用,同时,会产生内存碎片。标记阶段和清除阶段。标记阶段的任务是标记出所有需要被回收的对象,清除阶段就是回收被标... 阅读全文
posted @ 2015-10-14 23:04 moonandstar08 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 虚拟机类加载机制:虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。Java语言里,类型的加载和连接过程是在程序运行期间完成的。类的生命周期: 加载 loading 验证 verification 准备 prepar... 阅读全文
posted @ 2015-10-13 21:59 moonandstar08 阅读(194) 评论(0) 推荐(0) 编辑
摘要: Hashtable HashMap 并发操作 使用同步机制, 实际应用程序中,仅仅是Hashtable本身的同步并不能保证程序在并发操作下的正确性,需要高层次的并发保护。 下面的代码试图在key所对应的value值等于x的情况下修改value为x+1 { value = hashTable.get( 阅读全文
posted @ 2015-10-09 22:35 moonandstar08 阅读(297) 评论(0) 推荐(0) 编辑
摘要: Hashtable:synchronized是针对整张Hash表的,即每次锁住整张表让线程独占安全的背后是巨大的浪费ConcurrentHashMap和Hashtable主要区别就是围绕着锁的粒度以及如何锁 左边便是Hashtable的实现方式---锁整个hash表;而右边则是C... 阅读全文
posted @ 2015-10-09 22:17 moonandstar08 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区 (Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型 (concurrent,copyonright,queue... 阅读全文
posted @ 2015-10-09 21:52 moonandstar08 阅读(290) 评论(0) 推荐(0) 编辑
摘要: HashMap是近些年来java面试中常问到的知识点,很多人(包括我在内)都知道HashMap的用法,也知道HashMap与HashTable之间的区别,但是却不知其所以然,于是乎,本人开始查阅相关资料,解读HashMap的实现源代码,打算一探究竟。一、HashMap的基本了解 基本定义:根据源代码... 阅读全文
posted @ 2015-10-09 21:46 moonandstar08 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 1、Java虚拟机运行时的数据区2、常用的内存区域调节参数-Xms:初始堆大小,默认为物理内存的1/64(输出到日志文件来查看GC的状况; 3)jmap –heap可用于查看各个内存空间的大小;5)断代法可用GC汇总一、新生代可用GC1)串行GC(Serial Copying):client模式下默... 阅读全文
posted @ 2015-10-09 21:26 moonandstar08 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 一、比较原始的方案:触发器/Job/快照+dblink的方式,可实现同步和定时刷新;二台不同的数据库服务器,从一台数据库服务器A的一个用户读取另一台数据库服务器B下某个用户的数据,可以通过dblink来完成。二、通过物化视图定时刷新来实现数据同步。物化视图刷新方式有增量刷新和完全刷新两种模式;三、高... 阅读全文
posted @ 2015-10-09 21:15 moonandstar08 阅读(8234) 评论(0) 推荐(1) 编辑
摘要: NIO中的两个核心对象:缓冲区和通道,在谈到缓冲区时,我们说缓冲区对象本质上是一个数组,但它其实是一个特殊的数组,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况,如果我们使用get()方法从缓冲区获取数据或者使用put()方法把数据写入缓冲区,都会引起缓冲区状态的变化。本文为NI... 阅读全文
posted @ 2015-09-18 20:50 moonandstar08 阅读(324) 评论(0) 推荐(0) 编辑