簡體   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