java频繁创建对象删除对象

Python023

java频繁创建对象删除对象,第1张

java频繁创建对象优化方案

优化思路

具体实现

参考连接:︶ㄣ霞光里

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

优化思路

假如创建的对象,需要在 if 判断条件中使用,则在 if 判断条件中new新对象,这样可以减少对象的创建。

使用浅拷贝方案解决

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()

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

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

if (1=1) {

// 将创建对象放到if中,不进入if则不创建,提高效率

//SysMenuManagerGrant grant = new SysMenuManagerGrant()

User user = User.getInstance()

}

1

2

3

4

5

1

2

3

4

5

当一个类存在继承关系时,你创建一个子类的对象时,如果在没有明确指定的情况下,子类是会隐式的去调用父类的无参构造的。假设,我们需要频繁创建的对象,是一个继承关系比较深的类的话,调用构造函数的开销不容小窥。

如果一时间内,频繁创建某对象时,这些平时不显眼的消耗一叠加起来,就变得很客观了。但是,当我们使用clone的话,就可以避免这个问题。

你读取和保存是怎么弄的。这个删除也就相当于 读取时当它不存在 ,保存时忽略这项。。所以如果你没有删除功能,只能在读取和保存的时候作手脚,是这个意思吧。??

这样的话,你只能另外写个配置,弄个删除的相关标识符,在读取的时候每项都判断。如果和删除中的相符,跳过。。

其实删除的话,一般就再遍历一次,。反正计算机速度都快。重新读次也不会差多少时间。