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