CPU的三种架构

1. SMP

SMP (Symmetric Multiprocessing) , 对称多处理器。

优点:适用于小于等于4个CPU的架构,共享CPU、内存和IO

缺点: 横向扩展差,CPU一多总线成为瓶颈

通过以下命令发现只有一个Node则说明为SMP:

ls /sys/devices/system/node/

2. MPP

MPP (Massive Parallel......

JAVA代码优化记录

1. 避免伪共享(false sharing)

1.1 概述

代码层面放的比较近的字段频繁一起并发变更可能导致需要写相同的cache line,写cache line根据MESI协议,要让别的cpu下对应的cache line保持禁写。这导致原本可以从L1 L2cache中获取的数据不得不从L3或者内存中获取,命中率大大降低,性能下降。

参考资料:http://ifeve.com/from-javaeye-false-sharing/

1.2 解决办法

避免伪共享的关键就是避免并发访问的数据在一个cache line。那么解决办法也比较简单了,需要避免伪共享的对象,加个......

slab机制与伙伴算法

1. 伙伴系统(伙伴算法)

1.1 概览

伙伴系统(buddy system)或者称伙伴算法主要应用在操作系统的内存分配中。在操作系统课程中也是必提的概念。

该算法主要好处是:

搜索分配内存块较为快速,O(logN)时间复杂度

外部碎片概率较低: 按2的幂划分,可以理解为一种分层次的Best fit

1.2 分配和释放内存过程

维基百科有个例子可以参考:https://en.wikipedia.org/wiki/Buddy_memory_allocation

总体思想就是:分配内存的时候按照基本内存块大小,按照2的幂来分裂,直到best fit满足; 释放内......

事务隔离级别

1. 介绍

事务具备ACID的特性,本次主要回顾下事务隔离性的理解。 这个概念网上讨论的也很多,甚至自己之前也写过一篇文章总结,但是以前的理解还是不够到位,这次再重新回顾下。

2. 定义多种隔离性的原因

事务隔离的不同程度,实际上是通过不同的上锁要求来控制事务并发的能力。所以谈论事务隔离的时候,我们首先要想到“锁”和“并发”。上锁最严格,则意味着事务之间隔离性性越好,效率最低,但是自然也是最安全的。 上锁要求宽松,不仅减少了锁的开销,也提升了事务并发的能力,但是也增大了死锁的概率,以及并发带来的不可重复度、脏读和幻读等问题。

3. 基于锁的事务隔离级别

一般我们说的事务......

使用MAT分析堆栈

1. 介绍

Eclipse MAT是eclipse提供的插件用于分析JAVA heap。试过很多分析heap的,但是没有比这个更好用的了。

PS:在mac high sierra上直接下载独立运行的MAT貌似会出问题卡死,我是本地直接下载了个。

请先阅读下MAT官方的DOC:MAT官方DOC

2. 基本概念

2.1 堆中包含的内容

All Objects:Class, fields, primitive values and references

All Classes:Classloader, name, super class, static fields......