Spring启动控制器中的`new`是不好的做法?

时间:2018-03-12 08:53:02

标签: java spring-boot memory-leaks new-operator

在培训中,我多次听说在Spring启动应用程序中控制器或服务中的new是不好的做法,因为它可能导致内存泄漏。一个人告诉我们使用龙目岛

龙目岛是一个很好的工具,但我对new的内存泄漏感到疑惑。此外,如果我使用delombok,我会在那里看到相同的new关键字。

据我所知,垃圾收集器将删除所有未被引用的对象。这也包括Spring启动控制器。我不会谈论静态变量,而不是关闭流等。只是控制器方法中的局部变量。

如果我错了,请告诉我,如果我不理解某事,请告诉我。

1 个答案:

答案 0 :(得分:3)

  

在训练中,我多次听到过控制器或控制器中的新功能   Spring启动应用程序中的服务是不好的做法,因为它可以   导致内存泄漏。一个人告诉我们使用龙目岛

使用new运算符在我们的spring bean中创建对象并使用Lombok实际上是两个不同的东西,而主要目标是不同的:为第一个创建对象而不是在编译类中生成代码以减少锅炉板码。

  

我不谈静态变量,不是封闭流等。只是一个   控制器方法中的局部变量。

关于你对new运算符的理解,你应该忘记并理解,每次你必须创建一个不是由容器管理的bean的对象时,你必须使用{{1}操作员 例如,如何在不创建实体的情况下将实体持久保存在数据库中? 除了局部变量之外还有方法调用的范围。因此,如果您在方法中创建数百万个大对象,则不会发生内存泄漏。但你为什么要那样做呢?

相关问题