簡體   English   中英

java 成員變量是 GC-free 意味着什么

[英]What does it mean for a java member variable to be GC-free

我在 org.apache.coyote.Request.java 的 apache tomcat 源代碼中偶然發現了如下評論:

    This is a low-level, efficient representation of a server request. Most
 * fields are GC-free, expensive operations are delayed until the  user code
 * needs the information.

無 GC 意味着什么? 你如何讓 JVM 不對變量運行垃圾收集,這會不會很危險?

鏈接到 Github 上的org.apache.coyote.Request.java

他們並不是說他們讓 JVM 不運行垃圾收集。 他們所說的是這些字段不會生成 JVM 需要收集的垃圾。 更好的術語可能是無垃圾而不是無 GC。 或者可回收內存。 事實上,如果您查看org.apache.tomcat.util.buf.MessageBytes.java ,他們使用術語可回收。

您可以在Java Development without GC 中閱讀更多關於此的討論。 警告,他們正試圖向您出售一種商業產品來檢查您的內存使用情況並查找垃圾泄漏。

基本概念是,如果分配內存,則將其存儲在分配池中。 與其讓它超出范圍並被垃圾收集,不如將它保留在范圍內並在下一次分配時重用它。

Request.java 中,您可能需要查看recycle方法。 這似乎是清除舊內存並准備重用對象的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM