關於記憶體溢位遇到的兩種情況
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
相關推薦
JVM之記憶體溢位的幾種情況以及可以採取的解決方案
開發中遇到過以下三種記憶體溢位的狀況: 一、 java.lang.OutOfMemoryError: Java heap space 二、 java.lang.OutOfMemoryError: PermGen space 三、 java.lang.OutO
Jvm中記憶體溢位的4種情況
1、java堆溢位 java對用於儲存物件的例項,只要不斷的建立物件,並且保證GC Roots到物件之間有可達路徑來避免垃圾回收機制清除這些物件,那麼在物件數量達到最大堆的容量限制之後機會產生記憶體溢位異常。 當出現java堆記憶體溢位時,異常堆疊資訊“java.lang.OutOfMe
《 Java併發程式設計從入門到精通》 常見的記憶體溢位的三種情況
作者:張振華 購買連結:天貓商城 JD商城 噹噹書店 鳥欲高飛先振翅,人求上進先讀書。本文是原書的第9章 執行緒的監控及其日常工作中如何分析裡的9.3.3節常見的記憶體溢位的三種情況。 3. 常見的記憶體溢位的三種情況: 1)JVM Heap(堆)溢位:java.lang.Out
Jvm記憶體溢位的幾種情況
1、java堆溢位 java對用於儲存物件的例項,只要不斷的建立物件,並且保證GC Roots到物件之間有可達路徑來避免垃圾回收機制清除這些物件,那麼在物件數量達到最大堆的容量限制之後機會產生記憶體溢
Java記憶體溢位的幾種情況
正文本文通過幾段程式碼模擬實際的記憶體溢位異常。文中程式碼都是基於Oracle公司的HotSpot虛擬機器執行的。1. Java堆溢位1.1 模擬場景Java堆用於儲存物件,只要不斷的建立物件,並保證GC Roots到物件之間有可達路徑來避免垃圾回收機制清除這些物件,那麼在物
Tomcat記憶體溢位的三種情況及解決辦法分析
這三個方法都是說JVM的記憶體使用情況而不是作業系統的記憶體; maxMemory()這個方法返回的是java虛擬機器(這個程序)能構從作業系統那裡挖到的最大的記憶體,以位元組為單位,如果在執行java程式的時候,沒有新增-Xmx引數,那麼就是64兆,也就是說maxMemory()返回的大約是64*102
Java中OutOfMemoryError(記憶體溢位)的三種情況及解決辦法
相信有一定java開發經驗的人或多或少都會遇到OutOfMemoryError的問題,這個問題曾困擾了我很長時間,隨著解決各類問題經驗的積累以及對問題根源的探索,終於有了一個比較深入的認識。 在解決java記憶體溢位問題之前,需要對jvm(java虛擬機器)的記憶體管理有
關於記憶體溢位遇到的兩種情況
1.處理資料的程式或者服務是x86架構的,容易出現記憶體溢位。 因為x86的程序,最多允許記憶體4g、在這4g中又有2g是作業系統等、所以當你查詢的資料量非常大的時候,非常容易記憶體溢位。 2.多執行緒 容易導致記憶體溢位(溢位原理細節我還不清楚) 我查詢mongo資料量,資料按地區分類,我查到A地區有
django-將數據庫數據轉換成JSON格式(ORM和SQL兩種情況)
user 展示 blog serialize 進行 項目開發 不管怎麽說 語句 spa 最近打算搞一個自動化運維平臺,所以在看Django的知識。 在實際項目開發中,遇到一個小問題:前後端發生數據交互主流采用的是JSON。前端傳數據到服務器端比較簡單,稍微麻煩的是服務器端傳
【spring Boot】spring boot獲取資源文件的三種方式【兩種情況下】
不用 ash 12c ica pla bsp foreach set 使用 首先聲明一點,springboot獲取資源文件,需要看是 1》從spring boot默認的application.properties資源文件中獲取 2》還是從自定義的資源文件中獲取
js中三元運算符的兩種情況
type post == text 賦值 pos 情況 三元 一個 一、一般情況 <script type="text/javascript"> var b=5; (b == 5) ? a="true" : a="false"; document.write("
多線程(二)啟動線程:需要傳參和不需要傳參兩種情況
void ise tel 線程 reg val adl 方法 委托 1、不需要傳參: class Program7 { private static void ExecuteInForeground() {
android載入大量圖片記憶體溢位的三種解決辦法
方法一: 在從網路或本地載入圖片的時候,只加載縮圖。 /** * 按照路徑載入圖片 * @param path 圖片資源的存放路徑 * @param scalSize 縮小的倍數 * @return */ public s
0004-用OpenCV實現影象平移的程式碼(分影象尺寸不變和變兩種情況)
影象平移是啥東西就不用講了吧!需要注意的是影象平移有兩種,第一種是平移後圖像大小不變,這樣會損失影象的部分;第二種是平移後圖像大小變化,這樣原影象不會有損失。 直接上程式碼,大家看效果吧! 程式碼流程如下: 讀取影象→顯示原影象→呼叫自定義的函式translateTransform,作平移後
hibernate 級聯刪除時候的兩種情況 之(二) 刪除從表,無法刪除關係表
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
python 爬蟲時l兩種情況下設定ip代理proxy的方法(requests,selenium(chrome,phantomjs)
requests庫時,設定代理的方法: import requests proxy = '127.0.0.1:9743' proxies = { 'http': 'http://' + proxy, 'https': 'https://' + proxy, } try:
Nginx訪問PHP檔案的File not found錯誤處理,兩種情況
這個錯誤很常見,原有有下面兩種幾種 php-fpm找不到SCRIPT_FILENAME裡執行的php檔案 php-fpm不能訪問所執行的php,也就是許可權問題 第一種情況 更改配置檔案nginx.conf fastcgi_param SCRIPT_F
###### 常用:select option Change事件:拿到當前選擇的option值。###【難點在於:後兩種情況 alert除錯都是對的。事件change時 傳的值就是不對!】
###【難點在於:後兩種情況 alert除錯都是對的。事件change時 傳的值就是不對!】 =========》 有效: <span>角色<font color="red">*</font></span>
如何計算出子網掩碼(兩種情況)
子網掩碼計算方法有兩種: 方法一:利用子網數來計算: 1.首先,將子網數目從十進位制數轉化為二進位制數; 2.接著,統計得到的二進位制數的位數,設為N; 3.最後,先求出此IP地址對應的地址類別的子網掩碼。再將求出的子網掩碼的主機地址部分(也就是“主機號”)的前N位全部置1,
java ,不要太相信範型,範型失效的兩種情況
範型在java程式設計中有許多好處,也是我們平常經常使用的一種減少執行時錯誤的方式;但是在複雜的應用中,尤其是一個底層的模組中,我們不要太相信範型給我門反回的值。 首先: Java中範型是編譯時檢查型別,實際在位元組碼檔案中沒有對範型的描述,如果中間有沒有範型