一、目录 1.启蒙知识预热:CAS原理+JVM对象头内存存储结构 2.JVM中锁优化:锁粗化、锁消除、偏向锁、轻量级锁、自旋锁。 3.总结:偏向锁、轻量级锁,重量级锁的优缺点。 二、启蒙知识预热 开启本文之前先介绍2个概念 2.1.cas操作 为了提高性能,JVM很多操作都依赖CAS实现,一种乐观锁 ...
分类:
编程语言 时间:
2017-04-20 19:31:56
阅读次数:
296
数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。 基本类型包括:byte,short,int,long, ...
分类:
其他好文 时间:
2017-04-16 15:46:16
阅读次数:
171
分配过程: 对象不在堆上分配的情况有两种:TLAB和栈上分配。 之所以在TLAB(Thread Local Allocation Buffer)上分配是因为TLAB是线程私有的,没有锁开销,在Eden上分配需要加锁。 Sun Hotspot JVM为了提升对象内存分配的效率,对于所创建的线程都会分配 ...
分类:
其他好文 时间:
2017-04-04 22:14:14
阅读次数:
143
一、String 的含义 String 是定义一个字符串对象(内存中的字符串都是一个对象。) String 一旦被初始化就不能被改变(可以改变变量指向,但是不能改变对象内容) 定义方式: String s1 = “abc”; //在内存中存在一个对象。 String s2 = new String( ...
分类:
其他好文 时间:
2017-03-31 23:43:08
阅读次数:
264
一些基于自己的理解和总结,如有错误望指出。 1怎么理解构造函数 构造函数:所谓"构造函数",其实就是一个普通函数,但是内部使用了this变量。对构造函数使用new运算符,就能生成实例,并且this变量会指向实例对象。 构造函数每次实例化都是重新构造。 返回false是因为this的指向不一样,一个是 ...
分类:
其他好文 时间:
2017-03-30 18:34:14
阅读次数:
160
本质上,Memcached是一个简洁的key-value存储系统, 通过在内存中维护一张巨大的hash表. 每次客户端先访问Memcached, 如果命中直接返回数据, 否则丛数据库中查询返回给客户端. 然后更新Memcached. 如果Memcached存满了, 会使用LRU策略淘汰之前的对象内存 ...
分类:
系统相关 时间:
2017-03-22 17:50:09
阅读次数:
216
1.ARC下单对象内存管理 局部变量释放对象随之被释放 清空指针对象随之被释放 弱指针需要明确说明 注意: 千万不要使用弱指针保存新创建的对象 2.ARC下多对象内存管理 ARC和MRC一样, 想拥有某个对象必须用强指针保存对象, 但是不需要在dealloc方法中release 3.ARC下循环引用 ...
分类:
其他好文 时间:
2017-03-20 20:54:43
阅读次数:
198
JVM 通过 垃圾收集-GC 自动管理内存堆中对象内存的分配和回收。JVM 通常采用分代垃圾收集器,以便于整理内存碎片。分代垃圾收集器就是基于对象不同生命周期,将堆分成不同的内存区域,然后组合使用不同的垃圾收集算法,可简单认为分为两部分组成: Young Generation:年轻代,由Eden和两 ...
分类:
其他好文 时间:
2017-03-17 11:03:21
阅读次数:
279
对象内存布局 在Hotspot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头,实例数据,对齐填充。 1.对象头 1.1 存储对象自身的运行时数据(mark word):哈希码,gc分代年龄。 1.2 Class指针:通过该指针确定该对象是哪个类的实例。 在64位系统中,class指针占4B ...
分类:
其他好文 时间:
2017-03-16 20:27:23
阅读次数:
185
静态成员也称为共享成员,例如静态属性 静态字段 静态方法;静态成员可以在类的实例之间共享。 静态类中只能有静态成员,不能有实例成员,因为静态类不能进行实例化; 在非静态类中 即可以有静态成员 也可以有非静态成员; 只要是静态成员 属性 字段 方法,都需要用类名去调用; 静态成员和实例成员的区别: 静 ...