1 字符串优化处理
- string的不可变性
- substring 可能引发内存泄漏
- 字符串分割和查找
- stringBuffer和StringBuilder
- 优化字符串存储
2 核心数据结构
- List接口
- ArrayList,LinkedList,Vector
- Map接口
- HashMap,TreeMap,LinkedHashMap,Hashtable
- Set接口
- HashSet,LinkedHashSet,TreeSet
- 优化集合访问代码
- RandomAccess接口
3 使用NIO提升性能
- NIO中的Buffer类族和Channel
- XBuffer
- 分配内存,读取,flip()
- Buffer的原理
- 字节数组,position,capacity,limit
- Buffer的相关操作
- clear,flip,rewind
- MappedByteBuffer从nio直接内存映射
- 直接访问内存 DirectBuffer:分配内存,读取flip,创建和销毁比较耗时
4 引用类型
- 强引用:直接访问目标,内存泄漏
- 软引用:当堆内存率接近阀值时,才会回收软引用对象
- 弱引用:一旦垃圾回收就会回收
- 虚引用:最弱,跟踪垃圾回收的过程
- WeakHashMap类:弱引用,缓存表解决方案
5 性能测试工具JMH
- JMH的使用
- 指定测量模式
- 对象作用域
- 代码消除
6 有助于改善性能的技巧
- 使用局部变量
- 位运算替换除法
- 替换switch
- 一维数组代替二维数组
- 提取表达式
- 展开循环
- 布尔运算代替为运算
- 使用arrayCopy
- 使用buffer操作IO
- 使用clone代替new
- 慎用java函数式编程
网友评论