簡體   English   中英

我的過程內存恆定嗎?

[英]Is my process memory constant?

這是一個學術問題。 如果我有恆定數量的變量,對象等,並且我們假定GC將不會啟動,也不會出現瓶頸。 其他因素是否可以迫使我的應用程序內存波動? 在這種情況下,由我的進程分配的內存將保持不變嗎?

您可以使用互操作來調用非托管函數,該互操作會修改可用內存量。 而且,JIT編譯器可能會隨時啟動以將IL轉換為機器代碼,並可能消耗內存。 另外, 假設如果您使用.NET,則不能假定GC不會啟動,因此從錯誤的假設開始得出的任何結論都是錯誤的。 因此,要回答您的問題,您不能假設內存將保持不變。

您的方案是人為的,不現實的:

我們假設GC將不會啟動

好吧,會的。 您的應用程序在執行過程中可能采用不同的路徑。 如果確實如此,則狀態可能會不時有所不同,對堆上對象的引用可能會保留更長的時間,等等。我真的看不到這個問題的目的。

就像在這些人如何避免產生任何垃圾的問題中提到的那種情況那樣,這是可能的 使系統處於使用恆定內存集且不發生任何GC的狀態(因為沒有分配任何東西需要收集它,並且死掉了)。 鏈接到的文章甚至有一個實際的(但高度專業化的)案例。

請注意,它們有很多方法和類,它們不使用我們大多數人每天都會使用的方法和類。

暫無
暫無

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

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