佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 912|回复: 6

.NET window application的memory usage问题。。很紧急

[复制链接]
发表于 6-9-2006 04:47 PM | 显示全部楼层 |阅读模式
我帮公司做了一个.net window application。在我run the program的时候,我就ctrl+alt+del-->process,我发现在run着的program的memory usage竟然一直增加,一度高到120,000K。。我想问这是什么原因?请问有办法解决吗??
我的program有flash and animation file,我有用array,arraylist,datatable,但我已经clear it before i continue running the funciton......请给给你们的意见。。。
回复

使用道具 举报


ADVERTISEMENT

发表于 6-9-2006 09:06 PM | 显示全部楼层
make sure you had dispose any object after every sub routine. Also, when running, dont open up any window explorer, explorer will increase memery.
回复

使用道具 举报

发表于 7-9-2006 09:19 AM | 显示全部楼层
不太了解你写的整个软件架构如何, 所以难以下定论...
但要注意的是 Flash 和 DataTable 的运用... 这两个通常是导致这类事件发生的祸首.

1. Flash 运行太久和没有很好的撤销, 会导致 memory 的问题... 这个是亲身经历.

2. DataTable 资料太多, 会导致 resource 狂飙... 也是亲身经历...
回复

使用道具 举报

发表于 7-9-2006 09:28 AM | 显示全部楼层

回复 #3 goatstudio 的帖子

datatable资料太多,会影响
那么如果datatable太多呢?

我在p4 3.0ghz HT, 512Ram 开启或关启我的.net时,都相当慢
VS.net瞒吃memory resource,是吗?

这个主题很不错。。。
或许可以列出做.net时,要注意些什么,才可以让他不吃那么多memory resource.
回复

使用道具 举报

发表于 7-9-2006 09:39 AM | 显示全部楼层
原帖由 johe07 于 7-9-2006 09:28 AM 发表
datatable资料太多,会影响
那么如果datatable太多呢?

我在p4 3.0ghz HT, 512Ram 开启或关启我的.net时,都相当慢
VS.net瞒吃memory resource,是吗?

这个主题很不错。。。
或许可以列出做.net时,要注 ...


你是说关启你的 Visual Studio .Net IDE 呢, 还是 .Net 写的软件?
VS.NET 其实不太吃 resource, 但你的 RAM 太少了一点, 我的电脑是 1.4G, 1.25GB RAM,运行的很顺畅, 我常用来 debug DLL 到另外一个 DLL... 没什么大问题.

一个 aspx 最好别放太多 DataTable, 别以为放了 paging 就没事...
别忘了 server 先 search 完全部资料才做 paging 的...
回复

使用道具 举报

发表于 7-9-2006 10:08 AM | 显示全部楼层

回复 #5 goatstudio 的帖子

开启IDE到不会慢,是
- 我开和关我的project的时候。。。
- 我compile+run的时候。。。
- 我一开始打 coding 的时候,他也会lag一下。。。 但接下来就ok 了
- 有时候我加入 component进入form时,也会lag
回复

使用道具 举报

Follow Us
 楼主| 发表于 7-9-2006 11:44 AM | 显示全部楼层
我已经找到答案了,我是用flushmemory method to call garbage collector clean up any unused manage resource,the below is the coding,希望能帮到面对这问题的programmer。。

Private Declare Function SetProcessWorkingSetSize Lib "kernel32.dll" ( _
    ByVal process As IntPtr, _
    ByVal minimumWorkingSetSize As Integer, _
    ByVal maximumWorkingSetSize As Integer) As Integer

  Public Shared Sub FlushMemory()
    GC.Collect()
    GC.WaitForPendingFinalizers()
    If (Environment.OSVersion.Platform = PlatformID.Win32NT) Then
      SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1)
    End If
  End Sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 12-11-2024 06:40 AM , Processed in 0.107564 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表