摘要: jdk 由 1.7 升级到 1.8 底层改动很大,今天我们先来看一下其中一个基本结构 hashmap 的优化改动。那么具体hashmap1.7 和 hashmap1.8 有哪些区别呢? 1. JDK1.7用的是头插法,而 JDK1.8及之后使用的都是尾插法 那么他们为什么要这样做呢? 因为 JDK1 阅读全文
posted @ 2020-04-18 23:13 星火燎原智勇 阅读(1616) 评论(0) 推荐(0) 编辑
摘要: 在堆中,32位的对象引用(指针)占4个字节,而64位的对象引用占8个字节。也就是说,64位的对象引用大小是32位的2倍。64位JVM在支持更大堆的同时,由于对象引用变大却带来了性能问题。为了能够保持32位的性能,oop必须保留32位。那么,如何用32位oop来引用更大的堆内存呢?答案是——压缩指针。JVM的实现方式是,不再保存所有引用,而是每隔8个字节保存一个引用。例如,原来保存每个引用0、1、2...,现在只保存0、8、16...。我们可以通过增加JVM参数 -XX:+PrintFlagsFinal,验证UseCompressedOops的值,从而得知,到底是不是真的开启了压缩指针,还是压缩指针失效 阅读全文
posted @ 2020-04-18 20:03 星火燎原智勇 阅读(2606) 评论(1) 推荐(0) 编辑