[英]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.