摘要:
1.简述在Java内存运行时区域的各个部分中,程序计数器、虚拟机栈、本地方法栈3个区域随着线程而生,随着线程而亡。栈中的栈帧随着方法的进入和退出而有条不紊的进行着入栈和出栈操作。 每个栈帧需要分配多少内存基本上在类结构确定时就已知了,因此这几个区域的内存分配... 阅读全文
摘要:
简述Java内存模型(Java Memory Model,JMM),是用来屏蔽掉各种硬件和操作系统的内存访问差异,以实现Java程序在各种 平台下都能达到一致的内存访问效果.在JVM内部,Java内存模型把内存分成了两部分:线程栈区和堆区,下图展示了Java... 阅读全文
摘要:
1.HashMap简述HashMap是工作中最常用的集合工具之一,在整个集合框架中也是很重要的一部分,因此本篇文章主要讲述它的底层实现原理,因为jdk1.8中对HashMap的数据结构有了修改,所以本篇将会分别讲解jdk1.7和jdk1.8中HashMap的... 阅读全文
摘要:
1.简述对于Java程序员来说,在虚拟机自动内存管理机制下,不需要关心内存的回收问题,但是一旦出现内存泄漏和溢出问题,如果不了解虚拟机是怎么管理内存的,那么问题排查工作将是一项非常艰巨的任务。本文主要从概念层面介绍虚拟机内存的各个区域,以及对象创建时内存如何... 阅读全文
摘要:
简述LinkedHashSet底层使用 LinkedHashMap 来保存所有元素,它继承自 HashSet,其所有的方法操作上又与 HashSet 相同,因此 LinkedHashSet 的实现上非常简单,只提供了四个构造方法,并通过传递一个标识参数,调用... 阅读全文
摘要:
简述TreeSet是基于TreeMap作为存储的可排序、可去重的有序集合继承于AbstractSet,AbstractSet实现了equals和hashcode方法实现了NavigableSet接口,意味着它支持一系列的导航方法,比如查找与指定目标最匹配项实... 阅读全文
摘要:
简述HashSet继承于AbstractSet,实现接口Set,内部使用HashMap来存储数据,数据存储在HashMap的key中,value只是同一个默认值,所以HashSet存储的值是不能重复的。HashSet实现HashSet几乎实现了Set接口中的... 阅读全文
摘要:
简述Iterator迭代器的定义:迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义是,提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。迭代器通常被称为“轻量级”对象,因为创建它的代价... 阅读全文
摘要:
在Java并发包中有一些并发框架也使用了自旋CAS的方式实现了原子操作,比如:LinkedTransferQueue类的Xfer方法。CAS虽然很高效的解决了原子操作,但是CAS仍然存在三大问题:ABA问题、循环时间长开销大、只能保证一个共享变量的原子操作1... 阅读全文
摘要:
什么是类加载机制虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这既是虚拟机的类加载机制类的生命周期生命周期简述类从被加载到虚拟机内存开始,到卸载为止,它的整个生命周期包括:加载... 阅读全文