2010-09-29 66 views
0

考慮,垃圾收集屬性的Java

pageContext.setAttribute("name", new String("Shal")); 
String name1= new String("Jason"); 
pageContext.setAttribute("Alternate Name", name1)); 

內存是如何分配給上述兩個屬性,分配的內存將被回收的方式和時間。遵循的最佳實踐是什麼?

+0

另外,請不要使用'new String(「Shal」)'。除了浪費記憶之外,它沒有任何用處 – 2010-09-29 08:19:11

回答

1

與所有其他java對象一樣,它們將被分配到堆上,並且垃圾收集到(a)當它們不再可到達時,以及(b)當垃圾收集器該死的感覺像它。

當頁面完成執行時(即當JSP已完成呈現時),頁面範圍的屬性不再可達,除非VM中的其他內容另外引用了它們。

+0

我看不到'Shal'字符串是如何被驅逐的。我錯過了什麼? – Guillaume 2010-09-29 07:37:50

+0

@Guillaume:很對,我誤解了代碼 – skaffman 2010-09-29 07:43:57