[英]What happens with static function returning string array Visual C#?
我有返回字符串數組的靜態函數。 我從循環中調用此函數,並將返回值存儲到臨時數組中。 我的問題是,GC是否會在第一代中清理掉它,還是第二代時會保留下來?
您可以在下面看到代碼片段。
-----------更新的代碼--------------------------------
感謝您的所有答復。 假設我將有類似的東西清理字符串數組?
public static string[] SplitString(string strLine_)
{
string[] bit_ = strLine_.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
return bit_;
}
// ------內部不同的功能-------------- //
private void Foo()
{
while (numOfVolElts > count)
{
line = sr_.ReadLine();
if (!string.IsNullOrEmpty(line))
{
string[] bit4 = Definitions.SplitString(line);
for (int j = 0; j < bit4.Length; j++)
{
int matNum = Convert.ToInt32(bit4[j]);
volElements[count].matnr = matNum;
count++;
if (matNum > numMaterials)
numMaterials = matNum;
}
}
}
//GC.Collect(); //I know it's not recommended to call GC manually //but for this testing purpose to check if it cleans up string //array.
}
我的問題是,GC是否會在第一代中清理掉它,還是第二代時會保留下來?
注意這里的世代是Gen0和Gen1,您的字符串永遠不會進入Gen2。
兩者都有可能發生。 當GC在該while循環期間發生時,某些字符串將被使用(可達)並從Gen0升級到Gen1。 但是可能性很小,而且很少。
因此,無需擔心。
由於陣列壽命很短,因此幾乎每個實例都可能會保留在第一代中。
無法保證沒有實例會進入第二代,這取決於何時發生垃圾回收以及發生了什么。 但是,這種情況應該很少見。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.