繁体   English   中英

在Web应用程序Java中存储静态实例变量

[英]Storing in static instance variable in web app Java

假设我有一个静态实例变量,它存储Lists<?> 由于标记为静态,因此存储在该变量中的内容将一直保留到卸载该类为止。

现在以网络应用程序为例。 假设我使用诸如play和jpa之类的框架作为持久性。

如果我使用此变量来持久使用jpa。 但作为其静态实例变量,所有内容都将保留在内存中,直到应用程序重新加载为止。 由于它是一个Web应用程序,因此从该变量中持久存储的所有内容也将存储在内存中,直到应用程序重新加载。 因此,如果我不卸载类,jvm会不会耗尽内存?

还有使用实例变量进行持久化的最佳实践是什么

我不认为使用JPA(或任何类似技术)保留那些对象不会改变任何事情。 当您保留某些内容时,您只是将其保存在某个位置(在本例中为数据库)。 这些对象在持久化后仍将存在于内存中。

如果这些被某些东西引用(在您的情况下是静态var中的那些列表),则它们将不会被垃圾回收,因此,如果您继续向这些列表中添加元素并且不删除它们,最终将用完记忆。

还要注意,如果将这些对象存储在静态变量中,则它们可能被许多对象共享(例如:该类的实例试图添加,删除或计算元素数量),并且可能会遇到并发问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM