LoadableDetachableModel
是transientModelObject
一個瞬態場。爲什麼分離方法集爲什麼LoadableDetachableModel.detach設置transientModelObject = null?
transientModelObject=null
我在問這是因爲它不會被序列化。
LoadableDetachableModel
是transientModelObject
一個瞬態場。爲什麼分離方法集爲什麼LoadableDetachableModel.detach設置transientModelObject = null?
transientModelObject=null
我在問這是因爲它不會被序列化。
原因是因爲Page實例作爲活動(非序列化)對象保存在http會話中。合同LoadableDetachableModel
表示其modelObject
將在請求週期內可用。如果不是null
在detach()
明確-ified那麼這將是在未來的要求仍然可用。
在'LoadableDetachableModel.getObject'總是會做:'transientModelObject =負載()','因爲狀態== DETACHED'(或第一次,'state == null')。所以模型對象總是會被覆蓋。那麼當你說在下一個請求中它仍然可用時,你的意思是什麼? – ericj
這些州已經在幾個月前推出了。 LDM自10年以來一直存在。通過'null'-ifying模型對象手動我們保持會話大小小。 –
通常你的組件將保留在內存中(如果容器不序列會話到磁盤),所以抵消參考minimzes內存消耗。
爲什麼在下次請求之前不需要它時會浪費大量內存?
對於你要問那類的作者一個明確的答案,但我的猜測是使任何被它引用供GC。 (或者更精確地說:爲了避免被LDM唯一持有GC背部。) – biziclop