-
asp.net教程之一次关于ASP变量和对像关闭与不关闭
对于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%>
放之间到底有多少差别呢?所以今天特地对它们进行了一翻测试。
测试内容:测试的全局变量有一个,对象是采用连接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%>
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式