jvm
鋈巍醭觯
进步一点点
展开
-
synchronized锁升级示例演示
在说synchronized升级之前,先说明一下java对象的内存布局分为三部分:对象头、实例数据,对齐填充;其中对象头中含有对象自身的运行时数据,如哈希码、GC分代年龄、锁状态标志位、线程持有的锁、偏向线程ID等。在不同的锁状态标志位下有不同的差别,如下图所示: 如何查看对象占用内存的情况呢?OpenJDK 提供了一个非常好用的工具,JOL包,其maven依赖如下: <dependency> <groupId>org.openjdk.jol</groupId>原创 2020-10-08 22:45:24 · 128 阅读 · 0 评论 -
java的引用类型与演示
强引用 强引用是无论在任何情况下,只要强引用关系还存在,即使垃圾收集器进行垃圾回收,甚至抛出OOM,也不会回收掉被引用的对象,如下代码片段: Object obj = new Object(); 软引用 软引用是用来描述一些还有用,但非必须的对象。只被软引用关联着的对象,若JVM内存足够时,即使触发垃圾回收也不会回收该对象;但当JVM内存不够时,系统在发生OOM之前,就会对这些对象进行回收,若回收之后,还是没有足够的空间时,才会抛出OOM。下面我们用示例代码来说明: /** * 软引用 * <原创 2020-09-29 23:21:48 · 480 阅读 · 0 评论