我的系统采用COM+,但是现在有个问题
大概1天左右,就要重起一遍COM+服务才可以,否则就无法接受用户的请求我发现任务管理器上面有一个进程DLLHOST.EXE,占用的内存达到了130多M,刚开始的时候只有15M,这个是什么问题呢?是写的COM+组件有问题,还是内存不足啊机器的配置为2个CPU,1G内存
大概1天左右,就要重起一遍COM+服务才可以,否则就无法接受用户的请求我发现任务管理器上面有一个进程DLLHOST.EXE,占用的内存达到了130多M,刚开始的时候只有15M,这个是什么问题呢?是写的COM+组件有问题,还是内存不足啊机器的配置为2个CPU,1G内存
解决方案 »
- 请问一个CString类型的变量占用多大的内存?
- 百分求微软的关于打印模板的 BrochureMachine 示例项目代码???
- :)*****带有聊天功能的软件,大家有空看看提提意见(可先看看截图),有愿意一起做的朋友留下联系方式 ****:)
- 在什么地方有好一点的串口通信的程序呀?
- 急!急!我现在采用多媒体计时器实现精确定时,代码全都是仿造网上或MSDN的,可是就是编译或链接有问题,请懂行的朋友帮忙检查错误
- 如何将16、8、2进制数转化为10进制数?
- 怎样实现全屏功能?急,100分求教。
- [Help]C/C++如何实现HashTable哈希表?
- 我使用了Microsoft Media Player控件 有些地方不明
- 我想学windows编程,可又没钱买书(穷呀),手中只有一本《windows3.1编程指南》,请问这本书有没有看的价值呀?
- 这是怎么了??为什么我刚才上不来。。。
- 请问绘图问题
内存泄露?
我们的组件中都是关闭了recordset,也关闭了connecntion的
是不是这样就足够了呢?我如何才能找出哪里有泄露呢?
我们的组件是VB写的
是你的组件占用内存过度了
如果可能话,拆分你的组建,把功能分散一下,尽可能使用JIT....等等
估计是你的api没有作相应的释放动作吧.
Public Function SearchNewProperties(ByVal StrType As String, Optional ByRef LCount As Variant = -1) As Recordset
Dim rs As ADODB.Recordset
Dim rsCount As ADODB.Recordset
Dim cmd As ADODB.Command
Dim cn As ADODB.Connection
Dim MyReamisApp As ReamisSys.ReamisApp
Dim strSQL As String
Dim strWhere As String
Set rs = CreateObject("Adodb.Recordset")
Set rsCount = CreateObject("Adodb.Recordset")
Set cmd = CreateObject("Adodb.Command")
Set cn = CreateObject("Adodb.Connection")
Set MyReamisApp = CreateObject("ReamisSys.ReamisApp")
On Error GoTo ErrConnectDB
cn.Open MyReamisApp.ConnectionString
strSQL = "Select * From VwProperty Where "
Select Case UCase(Trim(StrType))
Case "DAY" '×î½üÒ»Ìì
strWhere = " CreatedTime > '" & Now - 1 & "'"
Case "WEEK" '×î½üÒ»ÖÜ
strWhere = " CreatedTime > '" & Now - 7 & "'"
Case "MONTH" '×î½üÒ»¸öÔÂ
strWhere = " CreatedTime > '" & Now - 30 & "'"
Case Else
On Error GoTo 0
GoTo errInvalidParameters
End Select
strSQL = strSQL + strWhere
If LCount <> -1 Then
Dim strSqlCount As String
strSqlCount = "Select count(*) as lCount From VwProperty where " & strWhere
On Error GoTo ErrAccessDb
rsCount.Open strSqlCount, cn, , adLockReadOnly
LCount = rsCount.Fields("LCount")
rsCount.Close
End If
On Error GoTo ErrAccessDb
rs.Open strSQL, cn, adOpenDynamic, adLockReadOnly
Set SearchNewProperties = rs
GetObjectContext.SetComplete
Exit Function
errInvalidParameters:
Err.Raise vbObjectError + ErrorReamisEnum.errInvalidParameters, ERRSRC_CustomerManager, LoadResString(ErrorReamisEnum.errInvalidParameters)
Exit Function
ErrConnectDB:
GetObjectContext.SetAbort
LogToFile "CustomerManager.SearchNewProperties", "Error occurred while connecting database:" _
& "Err.Number = " & Err.Number _
& "Err.Source = " & Err.Source _
& "Err.Description = " & Err.Description Err.Raise vbObjectError + ErrorReamisEnum.ErrConnectDB, ERRSRC_CustomerManager, _
LoadResString(ErrorReamisEnum.ErrConnectDB)
Exit FunctionErrAccessDb:
GetObjectContext.SetAbort
LogToFile "CustomerManager.SearchNewProperties", "Error occurred while Access database:" _
& "Err.Number = " & Err.Number _
& "Err.Source = " & Err.Source _
& "Err.Description = " & Err.Description
Err.Raise vbObjectError + ErrorReamisEnum.ErrAccessDb, ERRSRC_CustomerManager, _
LoadResString(ErrorReamisEnum.ErrAccessDb)
End Function
Dim rsCount As ADODB.Recordset
Dim cmd As ADODB.Command
Dim cn As ADODB.Connection 兄弟,为何用了这么多??
和我一样蠢! :)
在解决之前,我想知道有否一个功能可以指定时间自动关闭COM+服务的?
我在组件服务那里将闲置关闭之前的时间设置为1分钟,
那么在凌晨的时候肯定没有人访问,那么服务应该是停止的,但是并没有停止啊