Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在web app Java中存储静态实例变量_Java_Jpa_Playframework - Fatal编程技术网

在web app Java中存储静态实例变量

在web app Java中存储静态实例变量,java,jpa,playframework,Java,Jpa,Playframework,假设我有一个静态实例变量,它存储列表。由于它被标记为static,所以存储在这个变量中的内容将一直保留到类被卸载为止 现在以一个web应用程序为例。假设我使用play和jpa这样的框架作为持久性 如果我使用这个变量来持久化jpa。但作为其静态实例变量,在应用程序重新加载之前,所有内容都将保存在内存中。由于它是一个web应用程序,所以从该变量保存的所有内容也将存储在内存中,直到应用程序重新加载。如果我不卸载这个类,jvm不会耗尽内存吗 另外,使用实例变量进行持久化的最佳实践是什么?我不认为使用JP

假设我有一个静态实例变量,它存储
列表
。由于它被标记为static,所以存储在这个变量中的内容将一直保留到类被卸载为止

现在以一个web应用程序为例。假设我使用play和jpa这样的框架作为持久性

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


另外,使用实例变量进行持久化的最佳实践是什么?我不认为使用JPA(或任何类似技术)持久化这些对象会改变任何事情。当您持久化某些内容时,您只是将其保存在某个地方(在本例中是一个数据库)。这些对象在持久化后仍将存在于内存中

如果这些元素被某个东西引用(在您的例子中是静态变量中的那些列表),它们就不能被垃圾收集,因此如果您继续向这些列表添加元素而不删除它们,那么最终会耗尽内存


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

谢谢。这很有帮助。你能告诉我最好的做法吗。使用实例变量代替静态实例变量可以完成这项工作吗?或者我也应该从实例变量中删除吗?