DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: laidabin
今日帖子: 6
在线用户: 29
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 21968578 (咪咪糊糊) ★☆☆☆☆ -
普通会员
2017/4/26 7:40:21
标题:
可不可以控制vcl桌面程序只能使用多少内存? 浏览:1511
加入我的收藏
楼主: 可不可以控制vcl桌面程序只能使用多少内存?

原因是因为用多线程批量处理大文件时,内存不断上升,用光了所有系统内存,所以想控制自己的程序只允许使用系统的80%内存,请问要怎么样实现?或是否还有更好方案?
----------------------------------------------
-
作者:
男 sail2000 (小帆工作室) ★☆☆☆☆ -
盒子活跃会员
2017/4/26 9:50:21
1楼: 你这个想法很独特,有前途,
不过我还是建议你检讨自己的算法。
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
作者:
男 lsuper (lsuper) ★☆☆☆☆ -
盒子活跃会员
2017/4/26 9:54:10
1楼: 1、应当优先优化你的程序,譬如 windows MMF 处理文件或者多进程方式,每文件每进程
2、“只允许使用系统的 80% 内存”按照当前 windows docker 实现的原理,基于 windows Job 应该可以搞定(没用过,自己 gogo 吧)
----------------------------------------------
-
作者:
男 lsuper (lsuper) ★☆☆☆☆ -
盒子活跃会员
2017/4/26 9:56:30
2楼: 刚刮了一下,JwaWinNT.pas 中有这个定义:JOB_OBJECT_LIMIT_PROCESS_MEMORY

搜了一个 C++ 的例子:http://blog.csdn.net/you_lan_hai/article/details/8521603/
----------------------------------------------
-
作者:
男 yxsoft (yxsoft) ★☆☆☆☆ -
盒子活跃会员
2017/4/26 19:58:46
3楼: 大文件按流逐段处理即可
----------------------------------------------
Great!
作者:
男 roadrunner (roadrunner) ★☆☆☆☆ -
盒子活跃会员
2017/4/26 23:23:12
4楼: 不管你分了多少个线程去处理多个文件, 记住硬盘永远都只会串行地帮你去将数据一点点读取出来, 

所以除非你处理数据的速度比读取硬盘还慢, 否则多线程操作不但不会增加性能反而会拖慢处理速度

对于楼主的情况最简单地处理方法就是用单线程(或者单个后台线程)一个一个文件去处理, 这样不但可以解决内存占用问题性能也会略微提高一点
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行281.25毫秒 RSS