一个神奇的文本框内存占用问题。

Dangyuhang 2009-12-11 02:49:43
用Dephi 2010写了个小程序,界面很简单,整个窗体上只有一个文本框,在Vista下面编译运行一切正常,内存占用大概保持在5mb左右。

拿到XP下面跑了一下,看似也挺好,几个小时后,不经意间发现这个小东西的内存占用竟然达到了14mb之巨。顿感奇怪,为什么Vista好好的,拿到XP就不行了呢?你说要使程序复杂点也就罢了,这么个小东西能在什么地方出问题呢?

于是我从很多方面进行了测试,最后锁定了问题的成因,只要在Memo里用微软拼音输入法输入中文,就能看到内存以数百kb的速度往上涨,且涨上去之后就不会下降了。

起初我以为是TMemo控件的问题,但去看了一番源代码,并没有发现特别的地方。于是打开了XP自带的记事本,发现这个问题也存在,只要持续输入中文,内存就一直上涨,但它的涨幅仅仅只是几十kb的级别,且一段时间之后还会自动释放。

我百思不得其解了,谁知道这到底是为什么?应该如何释放那些被占用的内存呢?
...全文
274 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
JEVJEL 2012-04-14
  • 打赏
  • 举报
回复
你们这些家伙,都不针对问题,在这里乱扯别的,毛啊?
Dangyuhang 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 seamour 的回复:]
自己慢慢玩去吧,一口一个sb继续无知下去吧

[/Quote]

求求你了,别出现在我眼前了,我被你恶心怕了行不?
cm2004 2009-12-13
  • 打赏
  • 举报
回复
另外再顺便发表下我的谬论:技术再好都是个圈圈,始终还是个给别人打工的,钱到手才是最实际的
cm2004 2009-12-13
  • 打赏
  • 举报
回复
猩猩做人还是要懂得谦卑比较好,真正的高调是低调~
pathletboy 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 seamour 的回复:]
自己慢慢玩去吧,一口一个sb继续无知下去吧

[/Quote]
不要这么说啊,人家“无知”才来这个论坛求教的,有些时候,还是不要把自己当老师的好,共同探讨问题多好,当然你要是觉得人家和你档次差太多,配不上和你探讨,你可以无视之。
[Quote=引用 11 楼 seamour 的回复:]
在这里我藐视任何人还真都没什么问题
[/Quote]
一山还有一山高,高手可不光技术牛,人品才是第一位的。
Seamour 2009-12-12
  • 打赏
  • 举报
回复
自己慢慢玩去吧,一口一个sb继续无知下去吧
Dangyuhang 2009-12-12
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sz_haitao 的回复:]
水平有高低,语气还是不要有高低的好

输入法模块占用的内存量x,会算入在应用的内存占用量y,这可以理解——我是第一次知道
但是A应用的x会特别大、一直大而不会缩小,而B应用的x则不会大,大了也会缩小
虽然x是输入法占用的,但是,是不是A应用对输入法的哪里处理、控制做的不如B呢?

而且,对于最终用户,他们也许也像我和楼主一样,不知道y大是因为x大了
只看到lz的应用的y特别大,也可能就会认定lz写的程序有问题
所以,lz还是有责任解释、让A应用保持与B应用一样的表现
[/Quote]

这位朋友的话实在,就是这么个道理,谁都有擅长的领域,也都有不擅长的地方。碰到别人问问题,懂了,给别人解释下,不懂,大家讨论下,和和气气多好。

这个内存的问题我确实没头绪,我用C++和C#分别实现了类似的程序,同样Vista编译,XP运行,都没问题,就Delphi 2010编译出来的就有问题。我怀疑D2010有点问题。
Dangyuhang 2009-12-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 seamour 的回复:]
在这里我藐视任何人还真都没什么问题
从win9x开始,32位win系统的输入法就已经成形了,应用程序通过消息机制 imm32.dll 和第三方 ime 进行交互。从 win9x 开始,ime 就是个稍微特殊点儿的 dll 文件,file info 中需要标注 drive、ime 标记,同时完成 ime 约定的不到20个接口。imm32.dll 通过消息机制和应用程序通讯,加载 ime,ime 本身会在应用程序的进程空间中分配内存,它怎么分配你是管不着的更没必要去管。至于“在应用程序的进程空间中分配内存”意味着什么,由于你不懂什么是进程空间,虽然说到这儿了已经作完全部的解答,但是你还是不明白这意味着什么,所以就只能一嘴一个sb来显示自己的无知了

[/Quote]

我真的很好奇,你的自信从什么地方来?如此恶劣的态度,如此轻蔑的口气,你真是那种几秒钟就让人把你灭了的存在。

回到我的问题,我的小程序太简单,就直接拖了一个TMemo到界面上,没做任何处理,为什么在Vista这边很正常,到了XP那边内存占用就如此厉害?我拿了记事本做实验,似乎人家处理的挺好,内存再输入文字的时候会升高,但之后就会下降。

你说的原理我明白,可是能解释我的问题吗?我的本意是想知道是否Delphi 2010的TMemo是否有处理欠妥的地方,进而知道是否有什么解决的方案。

Delphi非我所长,学了才三天,只是发现了这个问题,想要问问大家是否有什么线索,可是我的命很背,上来就碰到你这么个老鼠屎,真的很扫兴。

你这种人,技术高到天又如何?
Dangyuhang 2009-12-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 seamour 的回复:]
人家 mspy 占的内存跟你的程序有毛关系?输入法都是天上掉下来的不需要占内存的?

[/Quote]

你能看懂中文吗?它输入法占的内存跟我没关系,但它导致我的程序内存占用飚升且不会下降,你说跟我有没有关系?最恨你这种不看清楚帖子就乱喷的二傻!
haitao 2009-12-12
  • 打赏
  • 举报
回复
水平有高低,语气还是不要有高低的好

输入法模块占用的内存量x,会算入在应用的内存占用量y,这可以理解——我是第一次知道
但是A应用的x会特别大、一直大而不会缩小,而B应用的x则不会大,大了也会缩小
虽然x是输入法占用的,但是,是不是A应用对输入法的哪里处理、控制做的不如B呢?

而且,对于最终用户,他们也许也像我和楼主一样,不知道y大是因为x大了
只看到lz的应用的y特别大,也可能就会认定lz写的程序有问题
所以,lz还是有责任解释、让A应用保持与B应用一样的表现
Seamour 2009-12-12
  • 打赏
  • 举报
回复
在这里我藐视任何人还真都没什么问题
从win9x开始,32位win系统的输入法就已经成形了,应用程序通过消息机制 imm32.dll 和第三方 ime 进行交互。从 win9x 开始,ime 就是个稍微特殊点儿的 dll 文件,file info 中需要标注 drive、ime 标记,同时完成 ime 约定的不到20个接口。imm32.dll 通过消息机制和应用程序通讯,加载 ime,ime 本身会在应用程序的进程空间中分配内存,它怎么分配你是管不着的更没必要去管。至于“在应用程序的进程空间中分配内存”意味着什么,由于你不懂什么是进程空间,虽然说到这儿了已经作完全部的解答,但是你还是不明白这意味着什么,所以就只能一嘴一个sb来显示自己的无知了
Seamour 2009-12-12
  • 打赏
  • 举报
回复
人家 mspy 占的内存跟你的程序有毛关系?输入法都是天上掉下来的不需要占内存的?
Dangyuhang 2009-12-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 harryfin 的回复:]
楼主试试直接拿到XP下编译
[/Quote]

这个我倒是也想过,但是就算这样解决了问题也不是我想要的结果,因为总不可能永远通过在XP下编译来解决兼容性问题。
Dangyuhang 2009-12-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 seamour 的回复:]
我该说啥,无知是无知者的墓志铭?你根本不懂什么叫进程空间,还什么输入法跟你的内存占用没关系

[/Quote]

那你能给我详细解释一下,为什么吗?上来就盛气凌人,感觉你好像掌握了天下第一的大秘密,就一抖王八之气开始藐视其他人。请问你能说出个所以然来吗?有数据和理论吗?我好像就看到你在冒酸气而已啊。你除了说我什么都不懂之外还会说什么别的吗?
唉,上来发个帖就遇到一个SB。扫兴啊。
QQ286251099 2009-12-12
  • 打赏
  • 举报
回复
小秋
哈哈
Harryfin 2009-12-12
  • 打赏
  • 举报
回复
楼主试试直接拿到XP下编译
Seamour 2009-12-12
  • 打赏
  • 举报
回复
我该说啥,无知是无知者的墓志铭?你根本不懂什么叫进程空间,还什么输入法跟你的内存占用没关系
Dangyuhang 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sz_haitao 的回复:]
d2010?d7写的呢?
[/Quote]

不知道,没有装D7,LS有条件的话试试看吧。
haitao 2009-12-11
  • 打赏
  • 举报
回复
d2010?d7写的呢?
hjkto 2009-12-11
  • 打赏
  • 举报
回复
占5m,算正常吧

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧