java1234

电脑版
提示:原网页已由神马搜索转码, 内容由www.java1234.com提供.

杭州-蚂蚁金服-Java高级 java并发编程、JVM等 PDF 下载


时间:2024-03-31 15:44来源:http://www.java1234.com 作者:转载  侵权举报
杭州-蚂蚁金服-Java高级 java并发编程、JVM等
杭州-蚂蚁金服-Java高级 java并发编程、JVM等 PDF 下载

 
 
 
相关截图:
 

主要内容:

1. jdk1.7 到 jdk1.8 Map 发生了什么变化(底层)?
1.8 之后 hashMap 的数据结构发生了变化,从之前的单纯的数组+链表结构变成数组+
+红黑树。也就是说在 JVM 存储 hashMap 的 K-V 时仅仅通过 key 来决定每一个 entry 的存
储槽位(Node[]中的 index)。并且 Value 以链表的形式挂在到对应槽位上(1.8 以后如果 value
长度大于 则转为红黑树)。
但是 hashmap1.7 跟 1.8 中都没有任何同步操作,容易出现并发问题,甚至出现死循环
导致系统不可用。解决方案是 jdk 的 ConcurrentHashMap,位于 java.util.concurrent 下,专门
解决并发问题。
 
2. ConcurrentHashMap
思路与 hashMap 差不多,但是支持并发操作,要复杂很多
 
3. 并行跟并发有什么区别?
并发:指应用交替执行不同的任务,多线程原理
并行:指应用同时执行不用的任务
区别:一个是交替执行,一个是同时执行。
 
4. jdk1.7 到 jdk1.8 java 虚拟机发生了什么变化?
JVM 中内存份为堆、栈内存,及方法区。
栈内存主要用途:执行线程方法,存放本地临时变量与线程方法执行是需要的引用对象
的地址。
堆内存主要用途:JVM 中所有对象信息都存放在堆内存中,相比栈内存,堆内存大很多
所以 JVM 一直通过对堆内存划分不同功能区块实现对堆内存中对象管理。
堆内存不够常见错误:OutOfMemoryError
栈内存溢出常见错误:StackOverFlowError
在 JDK7 以及其前期的 JDK 版本中,堆内存通常被分为三块区域 Nursery 内存(young
generation)、长时内存(old generation)、永久内存(Permanent Generation for VM Matedata)
 

 
 
------分隔线----------------------------
锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐