1.处理数据的程序或者服务是x86架构的,容易出现内存溢出。

因为x86的进程,最多允许内存4g、在这4g中又有2g是操作系统等、所以当你查询的数据量非常大的时候,非常容易内存溢出。

2.多线程 容易导致内存溢出(溢出原理细节我还不清楚)

我查询mongo数据量,数据按地区分类,我查到A地区有70000条数据,B地区有60000条数据。我要将两地数据导出成excel,A地导出成功、B地导出报错:内存溢出。

为什么会出现这个异常呢?

这是因为在MongoDB中B地数据的字段比A地多很多。MongoDB对于.net的这个版本的驱动的find方法 底层用的是Dictionary 的Add来获取满足条件的数据集合。但是Dictionary是.net中线程不安全的,MongoDB的驱动可能使用了多线程查询数据、把数据插入集合中,由于B地区的数据一行特别长,插入还没结束,线程跑去插另外一条数据去了,这导致集合内部的一个计数器计算错误,记的数少了,但是插入的这个行数是不会变的,导致行数超越了集合边界,于是报内存溢出。

参考文献:https://blog.csdn.net/liweiblog/article/details/52329740

转载于:https://www.cnblogs.com/wholeworld/p/10188216.html

关于内存溢出遇到的两种情况相关推荐

  1. delete不调用析构函数的两种情况

    1. 所使用的类为预定义类 下面这段函数代码编译运行时没有问题的,不需要CPtr的定义 ---PtrUser.h class CPtr; // 预定义 class CPtrUser { public: ...

  2. 进一步封装axios并调用其读取数据(吐槽~在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据)

    注意!!!(修改于2020年7月18日) 在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据 报错截图如下 报错内容: {&quo ...

  3. bartender外部表不是预期格式_批量合并Excel数据时“外部表不是预期格式”或“文件包含损坏数据”的两种情况...

    很多朋友在用Power Query合并(汇总)Excel数据时,碰到过"DataFormat.Error:外部表不是预期格式"或"DataFormat.Error:文件包 ...

  4. 【数字信号处理】周期延拓 ( 周期延拓的两种情况 | L ≥ N | L ≤ N )

    文章目录 一.周期延拓 二.周期延拓分两种情况 一.周期延拓 非周期的信号 通过 周期延拓 可以变为 周期信号 ; 周期延拓 : 非周期序列 构成 周期序列 的过程 ; 非周期序列 x(n)[0,N− ...

  5. 在origin 2018中同时画两个图,带errorbar和不带errorbar两种情况

    在origin 2018中同时画两个图,带errorbar和不带errorbar两种情况 在一个图层里同时画两幅图 两幅图坐标可不一致 ①在当前图层中,选中图层左上角的 1 标志 ②右键 1 →图层内 ...

  6. Verilog HDL中容易生成锁存器的两种情况

    在Verilog HDL的程序设计中,有两种情况会生成锁存器. 第一种情况 在always块中使用if语句,但是没有else,这会导致当条件不成立时,没有其他语句可执行,使得被赋值的寄存器一直保持不变 ...

  7. 修改db2管理服务器,创建DB2管理服务器的两种情况

    DB2管理服务器在创建时分为创建一个和创建多个两种情况,下面就为您详细介绍这两种创建DB2管理服务器的情况,供您参考学习. 一.创建DB2管理服务器(只能创建一个) 1.首先创建管理服务组用户(可不建 ...

  8. MySQL笔记-解决...mysql.sock (13)(两种情况会产生此问题)

    遇到这个mysql.sock(13)一般是两种情况. 一个是mysql.sock权限不够,最少要个775权限: chmod -R 775 /var/lib/mysql/ 如果嫌烦的话赋予777就可以了 ...

  9. java项目打jar包的两种情况

    java项目打jar包的两种情况 本文介绍一下java项目打jar包时的两种情况各怎么操作 方法/步骤 1.  1 一.java项目没有导入第三方jar包 这时候打包就比较简单: 1.  首先在Ecl ...

  10. 最小成本排序:两种情况

    最小成本排序:两个数交换,这两个数相加,一组数全部交换成有序之后,累加和就是成本. 如何求出最小的成本,有一点难度,主要在于有两种情况的分析,一种是每个元素交换到正确位置(会形成一些闭合的圆),进行计 ...

最新文章

  1. vue学生作业-图书管理系统
  2. 训练日志 2018.12.16
  3. 企业级备份方案系列PART3:SCDPM 2012备份/恢复Exchange2010
  4. heX:用HTML5和Node.JS开发桌面应用
  5. kernel笔记——库文件与系统调用
  6. apktook 反编译错误
  7. Spring Boot 你为什么这么耗内存?
  8. Delphi XE3 下载
  9. 自由软件、开源软件、免费软件之间的区别
  10. 多选框取值和默认勾选
  11. Java 操作 word 文档 (一)初识 word 文档
  12. openpcdet KeyError: ‘road_plane‘
  13. 在大数据认知观和真实性不一样的?
  14. 立创EDA极速入门(1)——熟悉PCB和立创EDA基本操作
  15. 华为AR系列路由器密码重置
  16. 【工具】1343- NVS —— js 实现的node版本管理工具
  17. 正则表达式内的常用的函数 2
  18. ZBrush: Stylized Sculpting ZBrush教程之程序化的雕刻 Lynda课程中文字幕
  19. python两点之间最短距离_寻找两点之间的最短距离Python
  20. 维恩贝特面试java后端开发面试经验

热门文章

  1. Laravel log channel 分组配置
  2. uniapp-App支付宝授权小记
  3. SSID,BSSID,ESSID 区别介绍
  4. mysql中文显示标题列_我在数据库中建立的列名为英文的,但标题是中文的,在编程界面中显示的是英文的列名,怎样设置成中文的?...
  5. 【小5聊】移动开发性能优化解决卡顿眩晕问题提高用户体验
  6. Ubuntu系统下基本配置Edison
  7. Intel处理器概述
  8. 如何将多个mp3文件合并成一个?
  9. 制作maven模板框架
  10. 东南大学计算机技术935专业考研经验分享