- 博客(3)
- 资源 (1)
- 收藏
- 关注
原创 巧用分段锁实现高效自增计数器
分段锁 数据分段上锁,将锁的粒度进一步细化,以此来提升并发的效率。 使用分段锁来提升并发性能的例子,如JDK提供的ConcurrentHashMap,线程安全的Map容器,但是性能比HashTable要高不少。 内部的每一个Segment都是一把锁,也都是一个小的HashMap,通过对Key计算哈希码,定位到一个Segment,每次只对其中一个Segment加锁,而不影响其他Segment的插入,通过分段加锁的方式来实现并发插入。理论上,16个Segment最高可支持16个线程并发插入数据,而HashTab
2020-09-28 20:50:58
115
原创 Java对象的内存是在哪里分配的?
目录Java内存分配策略栈上分配大对象进入老年代TLAB快慢分配 Java内存分配策略 当我们使用new关键字去实例化一个对象时,对象的内存在哪里分配? 相信很多Java程序员给出的答案都是【堆】,但事实并非绝对如此,JVM为此做了许多优化。 对于绝大多数对象,内存的确是在堆中分配的,但是随着JIT编译器的进步、逃逸分析技术的成熟,“Java对象都是在堆中分配内存”这个结论变得不是那么绝对了。 针对Java的内存分配策略,笔者这里画了一张简图如下: 栈上分配 当实例化的对象占用的内存空间较小,且对象没有发
2020-09-11 21:12:20
8639
原创 Java是解释执行还是编译执行的?
目录1、解释执行和编译执行的区别1.1、解释执行1.2、编译执行2、Java是解释执行还是编译执行?2.1、解释器和编译器2.2、何时编译?2.2.1、热点探测 1、解释执行和编译执行的区别 Java代码要想放到JVM里去运行,首先需要经过Javac的编译,将Java代码编译为字节码Class文件。 Class文件反汇编后就是一条条JVM指令了,但是这些指令JVM认识,计算机可不认识。 JVM想要执行这些指令,该怎么办呢? 1.1、解释执行 将JVM指令逐行翻译为本地机器码,逐行翻译,逐行执行。 优点:程序
2020-09-09 19:37:20
265
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝