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的话,就可以避免这个问题。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java的吞吐量上不去可能有多种原因,下面我列举了一些常见的原因和解决方法: 1. 硬件资源不足:如果你的服务器硬件配置较低,可能无法支持高吞吐量的需求。可以考虑升级硬件或者增加服务器数量来提高吞吐量。 2. 线程竞争:Java中的线程竞争可能导致吞吐量下降。可以通过优化线程池的大小、调整线程优先级、减少锁的使用等方式来减少线程竞争,提高吞吐量。 3. 内存管理:如果Java应用程序的内存使用不合理,可能会导致频繁的垃圾回收,从而影响吞吐量。可以通过调整堆内存大小、优化对象创建和销毁、使用对象池等方式来改善内存管理,提高吞吐量。 4. 数据库访问:如果Java应用程序频繁地进行数据库访问,可能会成为性能瓶颈。可以通过优化数据库查询语句、增加缓存机制、使用批量操作等方式来提高数据库访问性能,从而提高吞吐量。 5. 网络通信:如果Java应用程序涉及网络通信,网络延迟和带宽限制可能会影响吞吐量。可以通过优化网络通信协议、增加并发连接数、使用异步IO等方式来提高网络通信性能,从而提高吞吐量。 6. 代码优化:对Java应用程序的代码进行优化也是提高吞吐量的一种方式。可以通过使用高效的算法和数据结构、减少不必要的计算、避免频繁的IO操作等方式来优化代码,提高吞吐量。 以上是一些常见的原因和解决方法,具体的解决方案需要根据具体情况进行分析和调整。如果你能提供更多关于你的应用程序和环境的信息,我可以给出更具体的建议。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值