用三层结构,在Client端起动一个自动任务(线程),调用SERVER,Server在运行完后虚拟内存未释放。(SQL SERVER + Win2000)怎样使Server的虚拟内存在程序运行完后释放掉虚拟内存?一个对象反复Create、Free后,虚拟内存也会一个劲地上涨,能解释一下原因吗?谢谢
解决方案 »
- 如何在TListBox控件中实现斑马线效果?
- 如何去掉一个字符串后的制表符,就像用trim()去掉前后空格一样,在线等
- 关于fastreport3.2.5的使用的奇怪问题~
- 修改密码,提示找不到数据字段.
- 求APS可视化排程源码、程序设计流程图、开发文档、相关资料、程序、思路。请作过ERP的朋友顶力相助。
- 有关在dggrid中数字现示格式的问题
- 界面问题:如何在DELPHI中实现换肤?
- DELPHI 传递的消息中的问题,为什么用不了TMSG 很菜,谢谢
- 在InstallShield Express怎样设置bde aliases?
- Delphi消息机制
- 是男人都看看
- 100分征求《权限设置最佳方案》
如果没有内存泄漏,这个增长不会无限制的,操作系统会管理。一个对象反复Create、Free后,虚拟内存也会一个劲地上涨,能解释一下原因吗?谢谢
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这个可能是堆内存碎片造成的。
TO:pazee(耙子)(谁捡了我的钱包) 你说的是程序还在运行中吧?
如果没有内存泄漏,这个增长不会无限制的,操作系统会管理。我是这样做的:
1。SERVER做为服务器运行
2。CLIENT调用SERVER的Method
3。SERVER运行该Method
4。Method运行完后,Free所有内存;SERVER仍作为服务器运行,虚拟内存未完全释放
5。当CLIENT再调用SERVER的该Method时,虚拟内存会上涨直至用完所有虚拟内存应该没有内存泄露,我检查了所有创建的对象,均已释放;即使有泄露,在该Method中全为局部变量,该Method
在运行完后,系统也应自运释放其虚拟内存
一个对象反复Create、Free后,虚拟内存也会一个劲地上涨,能解释一下原因吗这个现象我是发现过,但我不知为什么。在一个函数中,创建一个AdoDataset,从数据库取数,再Free该对象,再创建,取数,FREE,如此反复,虚拟内存会一个劲地上涨。退使函数调用完毕后,虚拟内存也未释放。
注:我用的是DCOM,所有这些在DCOM中运行,另外,我用的是DELPHI5.0 (不好意思)
在运行完后,系统也应自运释放其虚拟内存
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这肯定存在泄漏。我曾经写过类似的服务程序。刚开始12M,跑一天就到了40M,过几天就几百M,跟踪了大约半年才解决问题,现在的程序跑半年也不会超过50M。内存泄露的情况比较复杂,还要从程序的逻辑结构上重新审核内存的分配和释放。