java对齐_Java直接内存对齐(Memory Alignment)

内存对齐意味将数据类型写入到内存地址时是按照它们大小切割的,内存对齐会带来性能提升,是Java性能提升的黑技术。内存对齐定义(n是2的乘幂):

boolean nAligned = (address%n) == 0;

如果内存地址是n字节的倍数,那么我们说这n字节是内存对齐的,注意,这里n是2的幂,说白了,内存地址正好放下n字节的倍数,两者相除余数为零,正好整除。

内存对齐类型有:

1.类型对齐:某种CPU需要其特定的对齐方式

2.缓存行对齐:正常是64,也有32/128,缓存行是主内存等内存的基本原子单位,有伪共享,字撕裂,原子性 等,跨缓存行性能差

3.内存页大小对齐:网络或磁盘操作时考虑

Java中使用内存对齐方法:

使用Direct/MappedByteBuffer/Unsafe等JDK工具类,Unsafe类基础核心,是官方或半官方访问内存的关键。

内存对齐方式:

1.类型对齐:某种CPU需要其特定的对齐方式

2.缓存行对齐:正常是64,也有32/128,缓存行是主内存等内存的基本原子单位,有伪共享,字撕裂,原子性 等,跨缓存行性能差,这是我们关注的。

4.内存页大小对齐:网络或磁盘操作时考虑

是否使用内存对齐对于性能是有影响的,下载这个gtihub可以对本机进行对齐与非对齐的性能测试。

基于内存对齐可以实现off heap以外的内存共享,如果将一个队列放入这个共享内存,就能实现Java的IPC通讯,每秒可以发送135M消息,实现无锁高并发。见:

[该贴被banq于2016-08-14 11:02修改过]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值