自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 java集合的底层实现

ArrayList (1)底层采用数组实现,若使用不带参数的构造方法,则生成长度为10的Object类型数组。 (2)若个数超过10,则生成一个新数组,长度为原数组的1.5倍+1,原数组的内容复制到新数组中。 (3)删除时,后续前移,代价高。 HashMap (1)HashMap是基于哈希表的Map接口的非同步实现(Hashtable跟HashMap很像,唯一的区别是Hashtalbe中的

2016-08-16 22:48:11 6921

原创 垃圾收集算法

1、标记-清除 标记所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。 缺点:效率问题;空间问题:产生了大量不连续的内存碎片,进而导致需要分配较大对象时无法找到足够的连续内存而提前触发另一次垃圾收集动作。 2、改进:复制 内存一分为二,用空一块,把活着对象复制到另一块,清空原来那块。 优点:不存在碎片;实现简单,运行高效。 缺点:将内存缩小为原来的一般,代价太高;受限于存活率,

2016-08-14 12:15:37 218

原创 java引用的类型

(1)强引用 new出来的,只要强引用还存在,收集器不会回收掉被引用的对象。 (2)软引用(还有用,非必须对象) 在系统内存溢出异常之前,将这些对象引进回收范围之中并进行第二次回收,若回收后内存仍不足,则抛溢出异常。Softreference类实现软引用。 (3)弱引用(非必须) 被弱引用关联的对象只能生存到下一次垃圾收集发生之前,不管内存是否充足。 (4)虚引用(可以无视) 无法通过

2016-08-14 11:54:08 234

原创 判断对象是否已死的算法

(1)引用计数算法,给每个对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,就减1;任何时刻都为0的对象就不可能再被引用。 缺点:很难解决对象之间的相互循环引用问题 (2)根搜索算法 “GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径成为引用链,当从GC Roots到这个对象不可达时,则此对象是不可用的。 “GC Roots”对象包括:

2016-08-14 11:34:40 343

原创 Java虚拟机模型区溢出的处理方式

1、堆溢出 采用内存映像工具(如Eclipse Momery Analyzer)对dump出来的堆存储快照进行分析,重点hi确认内存中的对象是否是必须的,先分清楚是泄露还是溢出。 若是泄露,进一步通过工具查看泄漏对象到GC Roots的引用链,观察泄漏对象是通过怎样的路径与GC roots相关联并导致垃圾收集器无法自动回收他们,掌握了泄漏对象的类型信息,以及GC

2016-08-14 09:43:45 347

原创 java虚拟机模型

本文内容部分摘自:http://blog.csdn.net/taohuaxinmu123/article/details/24472073 java虚拟机在执行java程序的过程中会把它锁管理的内存划分为若干个不同的数据区域: (1)程序计数器:它的作用是当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。 多线程是通过线程轮流切换

2016-08-13 18:22:09 366

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除