java频繁创建对象优化方案

java频繁创建对象优化方案

参考连接:︶ㄣ霞光里

目前在项目中,需要频繁的创建对象,导致程序比较慢。

优化思路

  1. 假如创建的对象,需要在 if 判断条件中使用,则在 if 判断条件中new新对象,这样可以减少对象的创建。
  2. 使用浅拷贝方案解决

Cloneable

  • 对于将会频繁创建的对象,我们要让这个类实现Cloneable接口,因为这个优化的核心,就是利用clone。
  • clone的最大特点就是,不会去调用任何构造方法,所以,在我看来重点应该放在构造方法中。下面我们来实现。

具体实现

1.对于需要频繁创建的实体类,需要实现Serializable和Cloneable接口

2.在此实体类中写一个getInstance(),其中就是返回clone()

package com.msun.device.anaysis.manager.entity.po.sys;

import lombok.Data;

import java.io.Serializable;

/**
 * @author 
 * @date 2021/3/22 17:13
 */
@Data
public class User implements Serializable,Cloneable{

    private static final long serialVersionUID = 1L;
    private static User  user = new User();


    /**
     * 用户id
     */
    private Long userId;
    /**
     * 用户名称
     */
    private String userName;

    /**
     * 调用对象创建优化
     * @return
     */
    public static User getInstance(){
        try {
            return (User) user.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return new User();
    }
}

3.在方法中新建对象的时候,直接getInstance()就可以。

if (1=1) {
                    // 将创建对象放到if中,不进入if则不创建,提高效率
//                    SysMenuManagerGrant grant = new SysMenuManagerGrant();
                    User user = User.getInstance();
                }

当一个类存在继承关系时,你创建一个子类的对象时,如果在没有明确指定的情况下,子类是会隐式的去调用父类的无参构造的。假设,我们需要频繁创建的对象,是一个继承关系比较深的类的话,调用构造函数的开销不容小窥。
如果一时间内,频繁创建某对象时,这些平时不显眼的消耗一叠加起来,就变得很客观了。但是,当我们使用clone的话,就可以避免这个问题。


版权声明:本文为weixin_42874602原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。