小问题,大隐患 ——ASP的对象释放

原创 2004年09月09日 14:57:00

初步接触ASP的程序,对于对象的使用还不是很清楚,发生了一些问题,在别人的帮助下得到了纠正,在此想作为一个忠告写出来,防止自己以后再出同样的错误。如果有不对之处还希望大家多多指正。

对于ASP程序,有以下几个基本的内置对象:
Application对象,Request对象,Response对象,Server对象,Session对象,
绝大多说的ASP的操作代码都是运用这些内置对象的方法。

除了以上几个内置对象外,我们平常编写ASP的程序(涉及到数据库)都还需要用到以下几种新创建的对象:
1、数据库连接对象
    一般把这种对象叫CONNECTION
  创建方法
dim ProConn
set ProConn=Server.CreateObject("ADODB.CONNECTION")
  使用这个CONNECTION对象打开一个Access数据库
ProConn.Open "driver={Microsoft Access Driver (*.mdb)};uid=;pwd=;DBQ=" & Server.MapPath("DB.mdb")

2、Recordset对象
    这种对象主要用来在ASP代码中执行数据库查询的SQL语句
  创建方法
dim rs
Set rs=Server.CreateObject("ADODB.Recordset")
rs.Open strSQL,ProConn,1,1
'strSQL是SQL语句的字符串
'ProConn是CONNECTION对象
'1,1是游标参数

以上两种对象是我们经常碰到的,它们在使用完毕后必须注意的就是释放这些对象。

释放的方法如下:
ProConn.close
rs.close     
set ProConn=nothing   
set rs=nothing    

接下来要说的是引用自创的DLL时使用的对象,关于怎么封装ASP代码为DLL请参看上一篇文章.


这种对象的使用如下:
Dim ConDB
set ConDB=Server.CreateObject("ConDBDLL.Conn")
'调用ConDB的方法
ConDB.ConnectDB()
ConDB.DBPath()
'ConnectDB()和DBPath()都是这个封装DLL中自定义的方法

CreateObject("ConDBDLL.Conn")中的ConDBDLL是这个DLL的工程名,Conn是这个工程中的class
简单的一句set ConDB=Server.CreateObject("ConDBDLL.Conn")就使ConDB变成了一个自创对象。

就是这么简单的一个对象,我却忘记了在调用创建这个对象的ASP文件的其他ASP源代码文件中释放掉,致使为以后存在了巨大的隐患。

这样没有释放的对象,在这个ASP的网站多次使用后,系统就会变得其慢无比,原因都是因为没有释放这个对象。
都是自己不细心的结果。
哎………

【Asp.Net】五大对象

学习Asp.Net时候,亲爱的于老师讲解了五大对象。趁着知识还没有忘记,趁热打铁,好好的总结一下。下面跟着我学习一下Asp.Net的五大对象。 Application 在没有学习Asp.Net...
  • Alisawxn
  • Alisawxn
  • 2016年06月07日 09:42
  • 1020

C++对象创建与释放

创建对象有以下四种形式: #include using namespace std; class A{ private: int i; public: A(){ cout...
  • iamgaowei
  • iamgaowei
  • 2014年04月03日 13:30
  • 4264

Java 对象释放与 finalize 方法

(转载)https://mazhuang.org/2015/12/15/java-object-finalize/ 本文谈论的知识很浅显,只是我发现自己掌握的相关知识并不扎实,对细节并不清楚,遂...
  • u010746364
  • u010746364
  • 2016年06月01日 13:16
  • 3797

Java基础知识总结(一)创建和销毁对象

契子:明年就要离开学校找工作了,时间过的真快,想一想这几年,做了一些事,也有一些事并没有做好,有很多收获,也有不少遗憾。感性的话在此不宜多说,既然选择了程序员这条道路,也要有把它到做事业的态度。在正式...
  • Zerohuan
  • Zerohuan
  • 2015年10月18日 19:59
  • 4323

爱恩 asp 生成json数据

  • boys1999
  • boys1999
  • 2015年02月06日 22:17
  • 683

java学习---new的对象怎么被内存回收

java,使用new创建对象,并将该对象的引用返回...对象依然存在,不会被垃圾回收,是什么意思啊? "我们在方法内部使用new创建对象,并将该对象的引用返回。如果该返回被一个引用接收,由于对象的...
  • u014737138
  • u014737138
  • 2016年04月14日 17:06
  • 3326

ARC下属性对象实例对象内存释放时机

ARC下属性对象实例对象内存释放时机      在ARC的机制里,内存是由系统释放,ARC的一个基本规则即使,只要某个对象被任一strong指针指向,那么它将不会被销毁。如果对象没有被任何stron...
  • shenyingqiang
  • shenyingqiang
  • 2015年11月01日 00:53
  • 1609

[Objective-C] 释放对象时在release之后要设成nil

参考:http://stackoverflow.com/questions/3072003/why-set-object-to-nil-after-sending-release-message-in...
  • yasi_xi
  • yasi_xi
  • 2015年07月01日 09:33
  • 2295

ASP.NET中应用Excel:(2)释放对象

我们访问的Excel对象是COM对象。对于COM对象(也包括接口),每次对于对象的引用(在C++中这一操作对应于ComCreateObject和QueryInterface)都会增加该对象的引用计数,...
  • immortal_mcl
  • immortal_mcl
  • 2014年09月13日 22:39
  • 330

C# Socket连接 无法访问已释放的对象

在进行Socket长连接时,若服务器或客户端出现异常时,另外一端对Socket对话进行操作时,程序会出现无法访问已释放的对象的问题。例如客户端出现问题主动断开Socket时,当服务器操作Socket时...
  • jjkliu
  • jjkliu
  • 2014年02月10日 09:20
  • 1499
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:小问题,大隐患 ——ASP的对象释放
举报原因:
原因补充:

(最多只允许输入30个字)