Collection 常用方法: add(E e):添加数据 clear():清空 isEmpty():判空 remove(Object o):移除单实例个 Contains(Object o):判断集合是否包含某个数据 toArray():集合转数组 ArrayList 扩容 利用无参构造器创建时,底层默认创建长度为0数组 添加第一个元素,创建长度为10的数组 存满时,扩容1.5倍 一次性存储的…
内存分区 HotSpot创建对象过程 类加载检查 内存分配:空闲列表、指针碰撞 初始化零值 设置对象头 执行init 内存堆结构 对象优先在Eden区分配。当 Eden 区没有足够空间进行分配时,虚拟机将发起一次 Minor GC。 堆内存被通常分为下面三部分: 新生代内存(Young Generation):Eden区、S0,S1 老生代(Old Generation):Tenured 永久代(…
悲观锁 总是假设最坏情况,即共享资源每次被访问的时候就会出现问题。即共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程。 独占锁:synchronized、ReentrantLock 缺点: 高并发情况易造成线程阻塞 大量阻塞带来频繁的上下文切换,增加系统性能开销 易造成死锁 常用场景 用于写比较多的情况,可以避免频繁失败和重试影响性能,它的开销是固定的。 乐观锁 总是假设最…
本文主要用于记录常见的Java基础知识的细节问题,会不断更新。 包装类型 基础类型之间==比较的是值,而包装类型之间==比较的是两个对象的内存地址,需要通过.equal来比较值 基本数据类型的包装类型都通过缓存机制来提升性能,Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128,127] 的相应类型的缓存数据,Character 创建了数值在 [0,127] …