大厂真题之蚂蚁金服-Java高级

VIP免费
2024-12-10 1 0 331.78KB 7 页 5.9玖币
侵权投诉
1. jdk1.7 jdk1.8 Map 发生了什么变化(底层)?
1.8 之后 hashMap 数据结构发生了变化,从之前的单纯的数组+表结构变成数组+
+红黑树。也就是说在 JVM 存储 hashMap K-V 时仅仅通过 key 来决定每一个 entry 的存
储槽位Node[]indexValue 以链表的形式挂在到对应槽位上1.8 以后如果 value
长度大于 8则转为红黑树)。
但是 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)
显示如下图:
在最上面一层是 Nursery 内存,一个对象被创建以后首先被房到 Nuersery 中的 Eden
存中,如果存活周期超过两Survivor(生存周期)之后会被转移Old Generation 中。
永久内存中存放对象的方法、变量等元数据信息。永久内存不够就会出现 以下错误:
java.lang.OutOfMemoryError:PermGen
但是在 JDK1.8 一般都不会得到这个错误因在于:1.8 中把存放元数据的永久内存
从堆内存中已到了本地内存(native Memory)中,1.8 JVM 内存结构变成了如下图:
这样永久内存就不占用堆内存,可以通过自增长来避免永久内存错误
-XX:MaxMetaspaceSize=128m 这只最大的远内存空间 128
JDK1.8 移除 PermGen,取而代之的是 MetaSpace 源空间
MetaSpace 垃 圾 回 收:对僵死的类及类加载器的垃圾回收机制昂在元数据使用达到
MaxMetaSpaceSize”参数的设定值时运行。
MetaSpace 监控:元空间的使用情况可以在 HotSpot1.8 的详细 GC 日志输出中得到。
更新 JDK1.8 的原因:
1.字符串存在永久代当中,容易出现性能问题和内存溢出
2.类及方法的信息比较难确定其大小,因此对永久代的大小制定比较困难,太小容易出
现永久代溢出,太大则容易导致老年代溢出。
3.永久代会为 GC 带来不必要的复杂度,并且回收效率偏低
4.Oracle 可能会想 HotSpot JRockit 合并。
5. 如果叫你自己设计一个中间件,你会如何设计?
我会从以下几点方面考虑开发:
1) 远程过程调用
2) 面向消息:利用搞笑的消息传递机制进行平台无关的数据交流,并给予数据通信
进行分布式系统的集成,有一下三个特点
i) 通讯程序可以在不同的时间运行
ii) 通讯晨旭之家可以一对一、一对多多对一甚至是
上述多种方式的混合
iii) 程序将消息放入消息队列会从小吸毒列中取出消
息来进行通讯
3) 对象请求代理:提供不同形式的通讯服务包括同步、排队、订阅发布、广播等
可构筑各种框架如:事物处理监控器、分布数据访问、对象事务管理器 OTM 等。
摘要:

1.jdk1.7到jdk1.8Map发生了什么变化(底层)?1.8之后hashMap的数据结构发生了变化,从之前的单纯的数组+链表结构变成数组+链表+红黑树。也就是说在JVM存储hashMap的K-V时仅仅通过key来决定每一个entry的存储槽位(Node[]中的index)。并且Value以链表的形式挂在到对应槽位上(1.8以后如果value长度大于8则转为红黑树)。但是hashmap1.7跟1.8中都没有任何同步操作,容易出现并发问题,甚至出现死循环导致系统不可用。解决方案是jdk的ConcurrentHashMap,位于java.util.concurrent下,专门解决并发问题。2....

展开>> 收起<<
大厂真题之蚂蚁金服-Java高级.pdf

共7页,预览2页

还剩页未读, 继续阅读

声明:本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。玖贝云文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知玖贝云文库,我们立即给予删除!
分类:计算机 价格:5.9玖币 属性:7 页 大小:331.78KB 格式:PDF 时间:2024-12-10

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 7
客服
关注