- 博客(3)
- 资源 (1)
- 收藏
- 关注
原创 巧用分段锁实现高效自增计数器
分段锁数据分段上锁,将锁的粒度进一步细化,以此来提升并发的效率。使用分段锁来提升并发性能的例子,如JDK提供的ConcurrentHashMap,线程安全的Map容器,但是性能比HashTable要高不少。内部的每一个Segment都是一把锁,也都是一个小的HashMap,通过对Key计算哈希码,定位到一个Segment,每次只对其中一个Segment加锁,而不影响其他Segment的插入,通过分段加锁的方式来实现并发插入。理论上,16个Segment最高可支持16个线程并发插入数据,而HashTab
2020-09-28 20:50:58 528 1
原创 Java对象的内存是在哪里分配的?
目录Java内存分配策略栈上分配大对象进入老年代TLAB快慢分配Java内存分配策略当我们使用new关键字去实例化一个对象时,对象的内存在哪里分配?相信很多Java程序员给出的答案都是【堆】,但事实并非绝对如此,JVM为此做了许多优化。对于绝大多数对象,内存的确是在堆中分配的,但是随着JIT编译器的进步、逃逸分析技术的成熟,“Java对象都是在堆中分配内存”这个结论变得不是那么绝对了。针对Java的内存分配策略,笔者这里画了一张简图如下:栈上分配当实例化的对象占用的内存空间较小,且对象没有发
2020-09-11 21:12:20 9979
原创 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 2657
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人