![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
nelson620
越到艰难处、越是修心时。
展开
-
面试专题(四):JVM的内存布局和垃圾回收机制
JVM的内存布局和垃圾回收机制如下图 当我们运行java程序的时候虚拟机并不会把程序所需要的所有数据一次性加载到内存(运行时数据区)中,它会按照数据的性质进行分类,这也就形成了运行时数据区,按照数据的性质,这些区域可以分为方法区、堆、虚拟机栈、本地方法栈、程序计数器。 程序计数器可以理解为IDEA给我们的代码行号(如下图), 虚拟机运行我们的程序的时候,例如当它执行到第31行代码的时候,它要知道...原创 2018-12-05 16:32:52 · 500 阅读 · 0 评论 -
面试专题(二):HashMap底层执行原理
一、HashMap的数据结构 首先有一个数组,如果hashMap不进行扩容的话默认是16个长度的数组,如果有hash冲突的话会使用单向链表来解决冲突。 1.1 HashMap的存储结构 数组、链表、红黑树(jdk1.8) HashMap中不单单只有数组结构,还有链表、红黑树 1.2 HashMap的特点 1.2.1 快速存储(put) 1.2.2 快速查找(时间复杂度O(1))(get) 1.2...原创 2018-12-05 13:27:46 · 237 阅读 · 0 评论 -
面试专题(三):Hashtable和ConcurrentHashMap如何实现线程安全
在平时开发过程中为了提高性能或业务解耦,会引入多线程,同时在开发web应用的时候,每个web容器在处理用户请求的时候会把用户的请求放到线程里面去执行,这就意味着即使我们不主动的去使用多线程,在实际运行的过程中,我们的程序还是处在一个多线程的环境。如果不做任何的同步控制,我们的代码在多线程环境下是不安全的。 由此及彼,我们看看HashMap的源码,观察一下它是否是线程安全的。 观察我们最常用的get...原创 2018-12-05 14:15:29 · 630 阅读 · 0 评论 -
面试专题(五):类加载机制和双亲委派模型
一、类加载机制 应用程序在使用类的时候,这个类的生命周期其实包括了如上图所示的七个阶段。 **使用:**就是我们平时在编码过程中用new关键字去创建一个类的实例去使用这个类。 **卸载:**虚拟机通过垃圾回收机制将这个类的信息和这个类相关的实例从虚拟机内存区域中移除。 一个虚拟机加载类的全过程就包括了:加载–>验证–>准备–>解析–>初始化 **加载:**通过这个类的全限...原创 2018-12-05 16:33:10 · 1521 阅读 · 2 评论