程序与CPU和内存

天之雪狐 2010-01-27 10:44:45
我遇到一个问题,同事写了一个多线程小程序,开启120个线程时,在他的本本上,内存占用最大 33M,在我的本本上,内存占用最大160M,我们2个本本的配置基本相同,2G的RAM,独立显卡,唯一不同的是,他的是P7450的CPU,我是T4300的CPU,CPU的基本参数也相同,主频他是2.13G/双核,我是2.10G/双核,一级和二级缓存也一样,但三级缓存他是3M ,我是1M。
为什么会出现这种情况,同样的代码,在不同的CPU上运行,占用的内存会相差如此大。谁能解释一下呢。
...全文
273 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
JPEXE 2010-02-23
  • 打赏
  • 举报
回复
引用 26 楼 unsigned 的回复:
理论上来讲应该是周边环境占用的内存。包括如数据库连接,三方库,甚至可能是植入程序。
事实上120个线程如果全部都能正常工作,占用超过120MB是正常的,默认情况下系统为每一个线程准备的栈空间会有1MB之多。而只有33MB,倒是应该怀疑一下是否因为系统当中并行的线程过多,导致只建立了30个线程之类的。

学习了!
僵哥 2010-02-22
  • 打赏
  • 举报
回复
理论上来讲应该是周边环境占用的内存。包括如数据库连接,三方库,甚至可能是植入程序。
事实上120个线程如果全部都能正常工作,占用超过120MB是正常的,默认情况下系统为每一个线程准备的栈空间会有1MB之多。而只有33MB,倒是应该怀疑一下是否因为系统当中并行的线程过多,导致只建立了30个线程之类的。
贝隆 2010-02-22
  • 打赏
  • 举报
回复
还有这么大的差距?不可思议
wudir 2010-02-19
  • 打赏
  • 举报
回复
关注 一下!!!!!!!!!!!!!!
haitao 2010-02-10
  • 打赏
  • 举报
回复
把 后台、数据库连接池 也运行在你的笔记本里,客户端占的内存可能就会降下来了

acridin 2010-02-05
  • 打赏
  • 举报
回复
内存吧
天之雪狐 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 kill211 的回复:]
搞笑了,P7450 T4300居然有三级缓存,LZ自己加上去的吧
[/Quote]
有没有,你可以自己上网去查CPU的资料。

TO:20楼
这个并不是瞬时内存,而是从一开始就如此。
关于虚拟内存设置,他的是默认的,大概是不到1G,我是手动改过,设的是4G的虚拟内存。

总体上来讲,我也比较倾向于虚拟内存的原因,但没有一个能满足逻辑性的说法,很苦恼。
YFLK 2010-02-04
  • 打赏
  • 举报
回复
就是两台机器完全相同,系统也相同的情况不,在某一时刻系统的内存调度也不会是相同的,这时进行内存使用的检查也还是有很大的差异的!
IDWB 2010-02-04
  • 打赏
  • 举报
回复
我觉得和CPU没有关系,主要还是和虚拟内存设置的关系
系统会给每个应用程序分配2^系统位数(8,16,32,64)的独立运行空间,而物理内存无法提供那么多空间,因此操作系统的一个重要功能就是内存管理,而实现这个功能的其中一个办法是用虚拟内存
另外程序所占用内存瞬时是不一样的。
ahjoe 2010-02-04
  • 打赏
  • 举报
回复
你这情况, 我觉得是跟系统有关系, 跟CPU没关系
天之雪狐 2010-02-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tjianliang 的回复:]
除了操作系统,还有就是同样的代码测试时执行的操作是否同样?
[/Quote]

程序运行时,所有的操作均相同,后台程序,他的本本有32个,我的本本只有26个。
天之雪狐 2010-02-01
  • 打赏
  • 举报
回复
我说了,所有的运行环境都类似,操作系统均为XP,补丁都是最新版,并且只运行这一个软件,2台本本,均为2G的RAM,不同的是,我是单根2G,他是2根1G的,虚拟内存,他是默认的,没改过,我是手动设的,最小4G,硬盘,他是320G,我是250G,但是我个人认为和其他硬件无关,关系最大的应该是CPU,并且是三级缓存。
另外还有一点,此程序是在他的本本上编译的,准备在我的本本上运行时,还去掉了连接数据库的连接池。在他的本本上运行时,是完整的,也就是说,在他的本本上运行时,同时还建了一个数据库连接池,同时创建了120个连接,内存占用最大才33M,在我的本本上运行时,没有连接到任何数据库,也没有创建连接,内存占用还达到了160M,真的想不明白,期待高人出现。

回复2楼,这个程序不得不用多线程,因为有几千上万个文件需要解密,并且最终结果还要导入到数据库,一个个的处理太费时了
kill211 2010-02-01
  • 打赏
  • 举报
回复
搞笑了,P7450 T4300居然有三级缓存,LZ自己加上去的吧
金卯刀 2010-02-01
  • 打赏
  • 举报
回复
應該與虛擬內存的大小設定有關,這個可能會影響到 OS對物理內存的管理
haitao 2010-02-01
  • 打赏
  • 举报
回复
看虚拟内存总量 是不是一样

他的电脑还有后台,挤占了物理内存,使得前台所占的物理内存减少
「已注销」 2010-01-28
  • 打赏
  • 举报
回复
把你们俩的电脑上其他任何程序都关掉,再试试。。

cpu不同肯定也是会有影响 的
dinoalex 2010-01-28
  • 打赏
  • 举报
回复
确定当时OS没什么其它的程序在运行??
dinoalex 2010-01-28
  • 打赏
  • 举报
回复
真的??
fhfanxin 2010-01-27
  • 打赏
  • 举报
回复
LZ用的了这么猛吗,这么多进程

整理内存吧
ok1411 2010-01-27
  • 打赏
  • 举报
回复
坐下听讲
加载更多回复(7)

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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