[英]Performance of memory in winforms with C#
在我打開SaveFileDialog
之前,進程內存正在以21MB運行,而在打開SaveFileDialog
之后,它會跳至42MB,即使關閉DialogBox之后,它也不會返回相同的值。
我不認為這是創建新對象的問題,因為在此過程的后期,我創建了更多的實例,並且內存完全沒有改變。 我對我有過的內存使用量有點擔心這個問題現在很長一段時間。
為什么會這樣呢? 還是VS中顯示的“進程內存”與表格的內存消耗有關系嗎? 這是我在對話框中的代碼
private void textBox4_Click(object sender, System.EventArgs e)
{
using(SaveFileDialog saveFileDialog1 = new SaveFileDialog())
{
saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.AddExtension = true;
saveFileDialog1.RestoreDirectory = true;
saveFileDialog1.DefaultExt = "txt";
saveFileDialog1.CreatePrompt = true;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
saveFileDialog1.CheckFileExists = true;
textBox4.Text = saveFileDialog1.FileName;
filename = saveFileDialog1.FileName;
try
{
using(StreamWriter s = new StreamWriter(filename))
{
s.WriteLine(header);
s.Flush();
}
}
catch (IOException)
{
MessageBox.Show("File is not accessible!");
}
}
}
}
我使該程序運行了幾個小時,而42MB的價值從未下降。
這是正常的,還可以。 它不是內存中的新對象。 相反,為了使用SaveFileDialog
,程序必須從系統中加載一些其他程序集。 因此,此新內存不是程序的操作內存或工作集的一部分,而是程序執行代碼本身的一部分。
除非系統處於實際的內存壓力下,否則該程序將不會自動卸載這些程序集,在這種情況下,其他東西確實需要該內存(或內存地址空間)。 畢竟,您可能會再次需要它們,而花一些時間卸載它們只會在程序發生時減慢速度。
這與鏈接的問題無關。 鏈接問題中的問題完全與安全性邊界有關,與使用過多內存無關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.