在培训中,我多次听说在Spring启动应用程序中控制器或服务中的new
是不好的做法,因为它可能导致内存泄漏。一个人告诉我们使用龙目岛
龙目岛是一个很好的工具,但我对new
的内存泄漏感到疑惑。此外,如果我使用delombok,我会在那里看到相同的new
关键字。
据我所知,垃圾收集器将删除所有未被引用的对象。这也包括Spring启动控制器。我不会谈论静态变量,而不是关闭流等。只是控制器方法中的局部变量。
如果我错了,请告诉我,如果我不理解某事,请告诉我。
答案 0 :(得分:3)
在训练中,我多次听到过控制器或控制器中的新功能 Spring启动应用程序中的服务是不好的做法,因为它可以 导致内存泄漏。一个人告诉我们使用龙目岛
使用new
运算符在我们的spring bean中创建对象并使用Lombok实际上是两个不同的东西,而主要目标是不同的:为第一个创建对象而不是在编译类中生成代码以减少锅炉板码。
我不谈静态变量,不是封闭流等。只是一个 控制器方法中的局部变量。
关于你对new
运算符的理解,你应该忘记并理解,每次你必须创建一个不是由容器管理的bean的对象时,你必须使用{{1}操作员
例如,如何在不创建实体的情况下将实体持久保存在数据库中?
除了局部变量之外还有方法调用的范围。因此,如果您在方法中创建数百万个大对象,则不会发生内存泄漏。但你为什么要那样做呢?