一次關於ASP變數和對像關閉與不關閉的差別測試

來源:互聯網
上載者:User
變數   對於ASP程式,用到的變數有全域變數,以及一些建立的對象。良好的ASP程式員都有釋放它們的習慣,但釋放與不釋
放之間到底有多少差別呢?所以今天特地對它們進行了一翻測試。

  測試內容:測試的全域變數有一個,對象是採用串連SQL的connection對象。
  第一次測試:不釋放全域變數而結束程式執行。
  第二次測試:釋放全域變數而結束程式執行。
  測試前準備:在運行測試前等待伺服器休息5分鐘,保證內容及CPU已經穩定下來。
  測試軟硬體:伺服器為平常的PIII550,記憶體256M。裝有Win2000+IIS5.0+SQL2000
        用戶端一台為Win2000,採用IE5.5,開一個瀏覽視窗
另一用戶端是Win98,IE5.0,開兩個瀏覽視窗

  共測試次數:三個用戶端累計執行到20000停止。

第一次測試報告(不釋放):

開始時記憶體佔用:146464K
開始一個用戶端後記憶體佔用:146996K CPU資源佔用31-32%
開始兩個用戶端記憶體佔用:147316K CPU資源佔用49-52%
後面的記憶體變化為 -> 147304K -> 147328
開始三個用戶端記憶體佔用:147868K CPU資源佔用59-69%
後面的記憶體變化為 -> 147868K -> 147864K -> 147856K -> 147724K -> 147828K
-> 147860K -> 147868K -> 148084K -> 148076K -> 148088K
-> 148040K -> 147940K
結束時記憶體佔用:147940K
三個用戶端停止請求後記憶體釋放情況:
147940K -> 148000K -> 147988K -> 146472K -> 146448K -> 146452K



第二次測試報告(釋放):

開始時記憶體佔用:146652K
開始一個用戶端後記憶體佔用:146996K CPU資源佔用35-38%
開始兩個用戶端記憶體佔用:147700K CPU資源佔用55-62%
開始三個用戶端記憶體佔用:148252K CPU資源佔用53-71%
後面的記憶體變化為 -> 148248K -> 148060K
....
-> 148080K -> 148076K
結束時記憶體佔用:147940K
三個用戶端停止請求後記憶體釋放情況:
148076K -> 147956K -> .... -> 146452

下面是兩次測試在結束用戶端穩定下來的記憶體差別:

第一次:146464-146716 = 252K
第二次:146652-146452 = -200K

第一次耗去了記憶體約252K,最好伺服器好像再也釋放不掉了
第二次很奇怪,到最後記憶體卻節約了200K,不知是什原因。

下面是兩次開始測試和結束測試一瞬時的記憶體使用量情況:

第一次:146464-147940 = 3476K
第二次:146652-148076 = 1324K

記憶體使用量情況第一次比第二次多了將近一倍。

這次測試說明釋放變數還是有益處的,特別是當系統長期啟動並執行,更是要注意釋放變數,放可保證伺服器資源不會白
白浪費而到窮盡。

----------------------------------------------------------

附部分測試代碼test.asp:

<%Option Explicit
If Request("qian")="qian" Then
Application("TestNumer") =0
Response.Write "重設為0!"
Response.end
End If
If Application("TestNumer") > 20000 Then
Response.Write "結束!!已經達到2000次"
Response.end
End If
%>
<!-- #include file=inc/setup.asp -->
<!-- #include file=inc/popu_fun.asp -->
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="refresh" content="0">
</head>

<body bgcolor="#FFFFFF" text="#000000">

</body>
</html>

<%dim yp
Application("TestNumer") = Application("TestNumer") + 1
Response.Write "TestNumer: " & Application("TestNumer")
initDatabase("YP")
initDatabase("YP")
initDatabase("YP")
initDatabase("YP")
yp=second(time)
Set yp=nothing
closedatabase%>



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。