背景

用于大数据分析,追求速度,将所有数据都放于内存处理。分为:业务模块层,框架层,表现层。

流程

  1. 用户点击运行。
  2. 框架层从文件中读入数据,进行预处理,放入内存,传递给业务层。
  3. 业务层从内存中获取数据,进行二次处理,生成结果。

循环2与3,直至处理完全部文件。

阅读全文 »

当前问题

目前有一个日志分析程序,随着数据的膨胀,工具的运行性能越来越差,甚至运行过程中出现申请不到内存的情况。在任务管理器里可以看到,还有足够的内存,可是却申请不到。由于程序在运行过程中,有许多次new/delete的操作,据此推测是有太多的内存碎片,导致无法申请到足够大的连续内存。

基础知识

new/delete做了什么?有哪些开销
slab
锁-查找空闲-找到合适大小连续的-分配-解锁。delete相反

阅读全文 »