直播中
測試內(nèi)容:測試的全局變量有一個,對象是采用連接SQL的connection對象。
第一次測試:不釋放全局變量而結(jié)束程序執(zhí)行。
第二次測試:釋放全局變量而結(jié)束程序執(zhí)行。
測試前準備:在運行測試前等待服務(wù)器休息5分鐘,保證內(nèi)容及CPU已經(jīng)穩(wěn)定下來。
測試軟硬件:服務(wù)器為平常的PIII550,內(nèi)存256M。裝有Win2000+IIS5.0+SQL2000
客戶端一臺為Win2000,采用IE5.5,開一個瀏覽窗口
另一客戶端是Win98,IE5.0,開兩個瀏覽窗口
共測試次數(shù):三個客戶端累計執(zhí)行到20000停止。
第一次測試報告(不釋放):
開始時內(nèi)存占用:146464K
開始一個客戶端后內(nèi)存占用:146996K CPU資源占用31-32%
開始兩個客戶端內(nèi)存占用:147316K CPU資源占用49-52%
后面的內(nèi)存變化為 -> 147304K -> 147328
開始三個客戶端內(nèi)存占用:147868K CPU資源占用59-69%
后面的內(nèi)存變化為 -> 147868K -> 147864K -> 147856K -> 147724K -> 147828K
-> 147860K -> 147868K -> 148084K -> 148076K -> 148088K
-> 148040K -> 147940K
結(jié)束時內(nèi)存占用:147940K
三個客戶端停止請求后內(nèi)存釋放情況:
147940K -> 148000K -> 147988K -> 146472K -> 146448K -> 146452K
第二次測試報告(釋放):
開始時內(nèi)存占用:146652K
開始一個客戶端后內(nèi)存占用:146996K CPU資源占用35-38%
開始兩個客戶端內(nèi)存占用:147700K CPU資源占用55-62%
開始三個客戶端內(nèi)存占用:148252K CPU資源占用53-71%
后面的內(nèi)存變化為 -> 148248K -> 148060K
....
-> 148080K -> 148076K
結(jié)束時內(nèi)存占用:147940K
三個客戶端停止請求后內(nèi)存釋放情況:
148076K -> 147956K -> .... -> 146452
下面是兩次測試在結(jié)束客戶端穩(wěn)定下來的內(nèi)存差別:
第一次:146464-146716 = 252K
第二次:146652-146452 = -200K
第一次耗去了內(nèi)存約252K,最好服務(wù)器好像再也釋放不掉了
第二次很奇怪,到最后內(nèi)存卻節(jié)約了200K,不知是什原因。
下面是兩次開始測試和結(jié)束測試一瞬時的內(nèi)存使用情況:
第一次:146464-147940 = 3476K
第二次:146652-148076 = 1324K
內(nèi)存使用情況第一次比第二次多了將近一倍。
這次測試說明釋放變量還是有益處的,特別是當系統(tǒng)長期運行的,更是要注意釋放變量,放可保證服務(wù)器資源不會白
白浪費而到窮盡。
----------------------------------------------------------
附部分測試代碼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 "結(jié)束!!已經(jīng)達到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%>