Java常見的幾種內存溢出及解決方法

Java常見的幾種內存溢出及解決方法【情況一】:
java.lang.OutOfMemoryError:Javaheapspace:這種是java堆內存不夠,一個原因是真不夠(如遞歸的層數太多等),另一個原因是程序中有死循環;
  如果是java堆內存不夠的話,可以通過調整JVM下面的配置來解決:
  -Xms3062m
  -Xmx3062m
【情況二】
  java.lang.OutOfMemoryError:GCoverheadlimitexceeded
  【解釋】:JDK6新增錯誤類型,當GC為釋放很小空間占用大量時間時拋出;一般是因為堆太小,導致異常的原因,沒有足夠的內存。
  【解決方案】:
  1、查看系統是否有使用大內存的代碼或死循環;
  2、通過添加JVM配置,來限制使用內存:
  -XX:-UseGCOverheadLimit
【情況三】:
  java.lang.OutOfMemoryError:PermGenspace:這種是P區內存不夠,可通過調整JVM的配置:
  -XX:MaxPermSize=128m
  -XXermSize=128m
  【注】:
  JVM的Perm區主要用于存放Class和Meta信息的,Class在被Loader時就會被放到PermGenspace,這個區域成為年老代,GC在主程序運行期間不會對年老區進行清理,默認是64M大小,當程序需要加載的對象比較多時,超過64M就會報這部分內存溢出了,需要加大內存分配,一般128m足夠。
【情況四】:
  java.lang.OutOfMemoryError:Directbuffermemory
  調整-XX:MaxDirectMemorySize=參數,如添加JVM配置:
  -XX:MaxDirectMemorySize=128m
【情況五】:
  java.lang.OutOfMemoryError:unabletocreatenewnativethread
  【原因】:Stack空間不足以創建額外的線程,要么是創建的線程過多,要么是Stack空間確實小了。
  【解決】:由于JVM沒有提供參數設置總的stack空間大小,但可以設置單個線程棧的大小;而系統的用戶空間一共是3G,除了Text/Data/BSS/MemoryMapping幾個段之外,Heap和Stack空間的總量有限,是此消彼長的。因此遇到這個錯誤,可以通過兩個途徑解決:1.通過-Xss啟動參數減少單個線程棧大小,這樣便能開更多線程(當然不能太小,太小會出現StackOverflowError);2.通過-Xms-Xmx兩參數減少Heap大小,將內存讓給Stack(前提是保證Heap空間夠用)。
【情況六】:
  java.lang.StackOverflowError
  【原因】:這也內存溢出錯誤的一種,即線程棧的溢出,要么是方法調用層次過多(比如存在無限遞歸調用),要么是線程棧太小。
  【解決】:優化程序設計,減少方法調用層次;調整-Xss參數增加線程棧大小。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387612.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387612.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387612.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

docker操作之mysql容器

1、創建宿主機器的掛載目錄 /opt/docker/mysql/conf /opt/docker/mysql/data /opt/docker/mysql/logs 2、創建【xxx.cnf】配置文件,內容如下所示: [mysqld]#服務唯一Idserver-id 1port 3306log-error /var/log/mysql/error.log #只能用IP地址skip_nam…

Windows10系統下wsappx占用CPU資源過高?wsappx是什么?如何關閉wsappx進程?

在Windows10系統開機的時候,wsappx進程占用的CPU資源非常高,導致電腦運行速度緩慢,那么我們如何關閉wsappx進程,讓電腦加快運行速度呢?下面就一起來看一下操作的方法吧。 【現象】 1、先來看一下電腦剛開機的時候&…

如何通過Windows Server 2008 R2建立NFS存儲

如何通過Windows Server 2008 R2建立NFS存儲在我們日常工作的某些實驗中,會需要使用存儲服務器。而硬件存儲成本高,如StarWind之類的iSCSI軟存儲解決方案需要單獨下載服務器端程序,且配置比較繁瑣,令很多新手們很是頭疼。事實上&a…

python-windows安裝相關問題

1.python的環境配置,有些時候是沒有配置的,需要在【系統環境】-【path】里添加。 2.安裝pip:從官網下載pip包,然后到包目錄》python setup.py install 安裝 3.安裝scrapyd:正常使用pip3 install scrapyd安裝不起&…

hdu 1542/1255 Atlantis/覆蓋的面積

1542 1255 兩道掃描線線段樹的入門題。 基本沒有什么區別&#xff0c;前者是模板&#xff0c;后者因為是求覆蓋次數至少在兩次以上的&#xff0c;這個同樣是具有并集性質的&#xff0c;所以把cover的判斷條件更改一下就可以了qwq。 hdu1542 代碼如下&#xff1a; #include<i…

使用了JDK自帶的jconsole查看Tomcat運行情況

最近對公司的項目進行JVM調優&#xff0c;使用了JDK自帶的jconsole查看Tomcat運行情況&#xff0c;記錄下配置以便以后參考&#xff1a;首先&#xff0c;修改Tomcat的bin目錄下的catalina.bat文件&#xff0c;在JAVA_OPTS變量中添加下面四行&#xff0c;即可set JAVA_OPTS %JAV…

jvm02

java虛擬機內存管理 每個線程就是一個順序的執行單元&#xff0c;線程共享區即多個線程共享同一塊區域&#xff0c;線程獨占區即每個線程都有自己的虛擬機棧&#xff0c;本地方法棧&#xff0c;程序計數器。 程序計數器是一個比較小的內存空間&#xff0c;可以看作是當前線程所…

搭建svn管理平臺

安裝svn服務器&#xff1a;yum -y install subversion創建svn的目錄&#xff1a;mkdir -p /data/svn初始化svn目錄&#xff1a;svnadmin create /data/svnconf下的三個目錄介紹&#xff1a;authz&#xff1a;控制權限,創建用戶。密碼在passwd創建 passwd&#xff1a;密碼文件&…

Oracle dataguard 正常切換和應急切換

Oracle dataguard 正常切換和應急切換oracle dataguard提供異地容災方案,能有效的防止單點故障和提供高可用技術,這里介紹dataguard正常主備切換和應急切換&#xff08;應急切換模擬主庫出現問題無法還原,備庫脫離dataguard接管主庫對外提供服務&#xff09;1&#xff09;Oracl…

好程序員web前端分享JS引擎的執行機制

好程序員web前端分享JS引擎的執行機制&#xff0c;請先著重牢記兩點&#xff01;JS是單線程語言。JS的EventLoop是JS的執行機制。深入了解JS的執行&#xff0c;就等于深入了解JS里的eventloop。1、靈魂三問&#xff1a;JS為什么是單線程的?為什么需要異步?單線程又是如何實現…

shutil模塊、json和pickle模塊

shutil模塊&#xff1a; 高級的文件、文件夾、壓縮包處理模塊 json和pickle模塊 之前學過eval內置方法可以將一個字符串轉化成Python對象&#xff0c;但eval方法是有局限性的&#xff0c;對于普通的數據類型&#xff0c;json.loads、eval都可以使用&#xff0c;但遇到特殊類型的…

每日一問:LayoutParams 你知道多少?

前面的文章中著重講解了 View 的測量流程。其中我提到了一句非常重要的話&#xff1a;**View 的測量匡高是由父控件的 MeasureSpec 和 View 自身的 LayoutParams 共同決定的。**我們在前面的 每日一問&#xff1a;談談對 MeasureSpec 的理解 把 MeasureSpec 的重點進行了講解&a…

kuangbin專題十六 KMP擴展KMP HDU2594 Simpsons’ Hidden Talents

Homer: Marge, I just figured out a way to discover some of the talents we weren’t aware we had. Marge: Yeah, what is it? Homer: Take me for example. I want to find out if I have a talent in politics, OK? Marge: OK. Homer: So I take some politician’s na…

SNI: 實現多域名虛擬主機的SSL/TLS認證

為什么80%的碼農都做不了架構師&#xff1f;>>> 一. 介紹 早期的SSLv2根據經典的公鑰基礎設施PKI(Public Key Infrastructure)設計&#xff0c;它默認認為&#xff1a;一臺服務器&#xff08;或者說一個IP&#xff09;只會提供一個服務&#xff0c;所以在SSL握手時…

echo(),print(),print_r(),var_dump()的區別

echo可以一次輸出多個值&#xff0c;多個值之間用逗號分隔。echo是語言結構(language construct)&#xff0c;而并不是真正的函數&#xff0c;因此不能作為表達式的一部分使用。echo是php的內部指令&#xff0c;不是函數&#xff0c;無返回值。 print()&#xff1a;函數print()…

我心目中的牛程序員、我們可以對比看看(人家還是看多年朋友面子上才肯幫忙1周,至少需支付1萬元辛苦費)...

為什么80%的碼農都做不了架構師&#xff1f;>>> 最近碰到客戶整個網站改版的需要&#xff0c;非常短的時間里只有1周時間里&#xff0c;需要把整個B2C網站徹底的進行版面&#xff0c;我自己估算了一下&#xff0c;就是往死里干一天工作48個小時&#xff0c;1周也干…

c#做端口轉發程序支持正向連接和反向鏈接

3389的時候 例子1&#xff1a;連接a機器的3389端口連不上&#xff0c;因為對方防火墻或者網關做了限制&#xff0c;只能訪問a機器的個別端口比如80。 例子2&#xff1a;連接a機器的幾乎所有端口都連不上&#xff08;對方乃內網或者防火墻網關做了限制&#xff09;&#xff0c…

Spring Boot(十四):spring boot整合shiro-登錄認證和權限管理

Spring Boot(十四)&#xff1a;spring boot整合shiro-登錄認證和權限管理 使用Spring Boot集成Apache Shiro。安全應該是互聯網公司的一道生命線&#xff0c;幾乎任何的公司都會涉及到這方面的需求。在Java領域一般有Spring Security、Apache Shiro等安全框架&#xff0c;但是由…

通用權限管理系統組件 (GPM - General Permissions Manager) 不改數據庫、甚至不寫代碼就集成銅墻鐵壁權限管理組件...

為什么80%的碼農都做不了架構師&#xff1f;>>> 越成熟的東西&#xff0c;越牛X的東西&#xff0c;越簡單才對&#xff0c;簡單才是硬道理&#xff0c;蘋果的手機只有少數幾個按鍵&#xff0c;蘋果Ipad也很少的按鈕&#xff0c;甚至連蘋果的筆記本鍵盤都少一排&…

數學符號及讀法大全

數學符號及讀法大全 常用數學輸入符號&#xff1a; ≈ ≡ ≠ &#xff1d; ≤≥ &#xff1c; &#xff1e; ≮ ≯ ∷ &#xff0b; &#xff0d; &#xff0f; ∫ ∮ ∝ ∞ ∧ ∨ ∑ ∏ ∪ ∩ ∈ ∵ ∴ ⊥ ‖ ∠ ⌒ ≌ ∽ √ &#xff08;&#xff09; 【】&#xff5b…