我有一個有關釋放非管理對象的查詢。由於非託管對象不直接受CLR控制,所以CLR不能直接釋放它,爲此我們調用dispose命令,但如果我們在該非託管對象的應用程序中未使用dispose命令,則該對象佔用的資源將如何釋放。未管理對象的內存管理
For Ex。如果在C#代碼中,我使用連接對象作爲
try
{
string strConnectionString = "";
strConnectionString = "Server=FTSPROD\\FTS_PROD;Database=tdps_uat;User ID=txnapp;password=txnapp;Min Pool Size=5;Max Pool Size=10000;";
for (int i = 0; i < 10000; i++)
{
SqlConnection cnUpdateTransaction;
cnUpdateTransaction = new SqlConnection(strConnectionString);
cnUpdateTransaction.Open();
cnUpdateTransaction.
//cnUpdateTransaction.Close();
}
}
catch (Exception Ex)
{
}
在這裏,我打開10000個連接對象實例並將它留給垃圾收集。現在,因爲它們是非託管對象,所以我不會調用close或dispose,然後最終如何釋放這些對象。操作系統是否會爲此和當做些什麼。請分享你的這個問題的一些文件鏈接。
你正在通過下面的不良做法:初始化變量爲「」,然後立即將其設置爲其他內容;通過不實施'使用'塊;並通過在代碼中包含連接字符串併發布代碼(提示:現在更改數據庫密碼**)。 –
我知道你所說的所有事情,但是這裏寫的代碼是非常基本的,它的目的只是爲了知道如果我們多次打開非託管連接並且沒有調用dispose或close方法,這個非託管連接對象將被釋放。另外我還沒有看到在C#中實現這個類(SqlConnection)的任何終結器。# – funsukvangdu