Java面试题(7)

介绍一下jvm堆内存的结构

有新生代和老年代组成,而新生代有分为Eden、from、to,新生代比例8:1:1

jvm新生代中的Suvivor区为什么要有from跟to,作用是干嘛的,互换的好处

标记复制,标记from存活,然后把存活的移到to区,清除未存活,最后把to重新移会from

优点:回收效率高,不会产生内存碎片

讲一个垃圾回收算法的原理

主要是引用计数法的GC和可达性分析法的GC

引用计数:新的引用指向该对象就+1,如果该引用被置空或引用其他对象就-1,为0就回收

可达性分析:沿着GC root (引用链)找,找不到就回收

阐述一下HashMap的数据结构

JDK1.8之前是数组+链表

1.8之后是数组+链表/红黑树,但数组容量到64,并且链表长度到达8,就会转红黑树

HashMap是线程安全的吗?有什么线程安全的Map

HashMap线程不安全,HashTable线程安全,ConcurrentHashMap线程安全

ConcurrentHashMap如何实现的线程安全

1.8之前是底层数据结构是segment大数组+hashEntry小数组+链表,实现线程安全主要靠synchronize关键字,1.8之后底层数据结构数组+链表/红黑树,使用CAS(compare and swap)比较与交换实现线程安全

synchronized是如何实现线程安全的

给对象加锁,防止其他线程访问共享资源,进而保证临界区内的变量在多线程下的安全,原理是使用flag标记acc-synchronized,线程执行先持有同步锁,然后再执行方法,最后释放锁

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值