Java内存优化

Catalogue
  1. 1. 常驻内存
    1. 1.1. 排查内存泄漏
    2. 1.2. 重用对象
      1. 1.2.1. String.intern()
    3. 1.3. Integer.valueOf()
      1. 1.3.1. 只需一个实例的对象一定要使用单例
      2. 1.3.2. 对象池技术
    4. 1.4. 使用小数据类型
    5. 1.5. 减少线程数
    6. 1.6. 去垃圾回收机制
    7. 1.7. System.arraycopy ()
  2. 2. 临时内存
    1. 2.1. 减少不必要的对象拷贝,重写对象的clone方法
    2. 2.2. 容器大小预估

常驻内存

排查内存泄漏

重用对象

String.intern()

在某服务中,通过与其他进程通讯获取到格式为byte[]的字段,将byte[]转化成String的时候利用new String(byte[])方法,但是string很多是相同的,产生了大量相同的string对象,而且这些对象是程序中当作缓存来用一直存在于内存中,采用String.intern()对String对象进行缓存,降低了内存占用30M。

Integer.valueOf()

只需一个实例的对象一定要使用单例

对象池技术

使用小数据类型

减少线程数

去垃圾回收机制

System.arraycopy ()

临时内存

减少不必要的对象拷贝,重写对象的clone方法

容器大小预估

容器在扩容时会产生大量临时对象,对容器大小进行预估传入初始值可以减少容器的扩容