- 尽量重用对象,不要循环创建对象,比如:for 循环字符串拼接(不在 for中使用+拼接,先new 一个StringBuilder再在 for 里 append)
- 容器类初始化的地时候指定长度
- ArrayList(底层数组)随机遍历快,LinkedList(底层双向链表)添加删除快
- 集合遍历尽量减少重复计算
- 使用 Entry 遍历 Map
- 大数组复制使用System.arraycopy
- 尽量使用基本类型而不是包装类型
- 不要手动调用 System.gc()
- 及时消除过期对象的引用,防止内存泄漏
- 尽量使用局部变量,减小变量的作用域
- 尽量使用非同步的容器ArraryList ,避免使用Vector
- 尽量减小同步作用范围, synchronized 方法,避免使用synchronized 代码块
- 用ThreadLocal 缓存线程不安全的对象,SimpleDateFormat
- 尽量使用延迟加载
- 尽量减少使用反射,必须用加缓存
- 尽量使用连接池、线程池、对象池、缓存
- 及时释放资源, I/O 流、Socket、数据库连接
- 慎用异常,不要用抛异常来表示正常的业务逻辑
- String 操作尽量少用正则表达式
- 日志输出注意使用不同的级别
- 日志中参数拼接使用占位符
log.info("orderId:" + orderId); 不推荐
log.info("orderId:{}", orderId); 推荐