你好,游客 登录 注册 搜索
背景:
阅读新闻

QT中有没有对大数据处理的合适的内存分配方法

[日期:2015-03-27] 来源:  作者:edwalik [字体: ]

  如题, QT里有没有对大数据处理的比较好的内存分配的方法, 求教高人。

  举例来说,就是比如做网格建模,有一个300*300*100的维度的网格模型,每个网格节点用一个体voxel表示,每个voxel有8个角点,这样在内存中,总共用掉的内存就有300*300*100*8*4*3(每个节点用x,y,z表示)=288000000*3字节(274.658M*3),这只是网格节点的定义用掉的内存就有800+M,而且每个网格内还需要存入属性数据,这样内存消耗就更大了,我在QT里试了试,当定义这样一个 300*300*100的网格模型时,程序编译通过, 但是运行时自动报错。

  这个应该是程序运行到一定的节点了,申请内存不足,我知道64位应用就不会出这个问题,但是常用的现在还是32位系统应用,哪位能给出个比较好的32位应用可以解决这个内存消耗的方法呢,在此谢过了。

  还想请教跟这个相关的另一个问题,我们自己编写应用的时候,单个exe的线程数QT里是怎么处理的呢。

  这里的7个线程是QT自己实现的吗。

  如果说32位应用的内存申请除了系统的消耗和其他程序的消耗最大能申请2G(实测定义网格时,程序内存达到1.4~1.5G时就自动奔溃了),这个是不是意味着每个线程都可以申请2G的内存?

  1) 可能与你定义数据的结构有关系,导致实际占用的内存超过32位的限制,申请一个1.7G的堆,加上应用占用的其它内存,一般情况下也应该可以用。

  2)所谓定义的数据是不是一定要在运行时候放在内存中,是值得商榷的,用结构化的二进制文件,利用结构来优化文件的定位和读写,是解决你的问题,并提供更好的系统扩展的方向。

  3)32位4G内存 win linux的进程模型

  4)线程数量你在具体应用,进行申请时,数量一般够用。但是如果需要的任务数量少于 CPU的数量*核 的数量,硬件资源等于还有更大的使用空间,申请的任务可以粗浅的理解为能够同时全速执行。而超过了,则需要系统来对多个线程的执行情况进行调度,但肯定是不能同时执行的。





收藏 推荐 打印 | 录入:Cstor | 阅读:
本文评论   查看全部评论 (2)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款