Chinaunix首页 | 论坛 | 博客
  • 博客访问: 94458
  • 博文数量: 17
  • 博客积分: 366
  • 博客等级: 一等列兵
  • 技术积分: 235
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-16 16:31
文章分类

全部博文(17)

文章存档

2011年(17)

我的朋友

分类: Delphi

2011-09-07 09:05:56

数据部的同事刚刚完成上海的一个项目,20平方公里的精细模型的制作。甲方对贴图的精度要求非常高,以至于他们给20平方公里的建筑贴了
几万张贴图。数据部一直使用是国外非常著名的三维平台,但是面对这个几乎一平米一张贴图的数据,国外的那个平台也无法加载。这让同事非常
郁闷,质量最高的一套数据无法拿去演示。希望我们自己的平台能够解决这个问题。
我们把其中大概四分之一的数据导出成单个文件,加载时观察内存的占用,发现当内存读取到1.8G左右的时候程序就会崩溃了。这是一个非常
有趣的现象:如果一次读入所有数据,我们的程序在尚未初始化完成时就崩溃了。我们自己的平台是可以通过分块索引的形式读取数据的,因此最
后顺利地解决了这个问题。但是关于计算机为什么吃不下大于1.8G内存程序的问题却有必要讨论一下。
数据部的电脑内存有16G,同样吃不下这个数据,说明出现这个问题的罪魁并不是内存紧张。回忆起intel微处理器和Linux内核书籍中关于内存
寻址的知识:32位进程最多寻址到4G内存,而实际上为了给系统进程留空间,用户进程的并不能充分占有所有的4G内存,一般的说法是windows的用户
进程能够占用的上限是2G,而Linux的用户进程的上限在3-4G之间。这就解释了为什么空有高配的电脑却发挥不了应用优势的原因,这批数据的瓶颈
在内存,但是尽管有高配的计算机,却无法在32位的单进程程序上突破这个瓶颈。
阅读(2201) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~