亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

java語(yǔ)言

JAVA常見(jiàn)錯(cuò)誤處理方法

時(shí)間:2025-02-08 20:59:06 java語(yǔ)言 我要投稿
  • 相關(guān)推薦

JAVA常見(jiàn)錯(cuò)誤處理方法

  Java語(yǔ)言作為靜態(tài)面向?qū)ο缶幊陶Z(yǔ)言的代表,極好地實(shí)現(xiàn)了面向?qū)ο罄碚摚试S程序員以?xún)?yōu)雅的思維方式進(jìn)行復(fù)雜的編程。本文特意為大家收集整理了JAVA常見(jiàn)錯(cuò)誤處理方法,希望大家喜歡!

JAVA常見(jiàn)錯(cuò)誤處理方法

  java.lang.OutOfMemoryError: Java heap space

  原因:Heap內(nèi)存溢出,意味著Young和Old generation的內(nèi)存不夠。

  解決:調(diào)整java啟動(dòng)參數(shù)-Xms -Xmx 來(lái)增加Heap內(nèi)存。

  java.lang.OutOfMemoryError: unable to create new native thread

  原因:Stack空間不足以創(chuàng)建額外的線(xiàn)程,要么是創(chuàng)建的線(xiàn)程過(guò)多,要么是Stack空間確實(shí)小了。

  解決:由于JVM沒(méi)有提供參數(shù)設(shè)置總的stack空間大小,但可以設(shè)置單個(gè)線(xiàn)程棧的大小;而系統(tǒng)的用戶(hù)空間一共是3G,除了Text/Data/BSS /MemoryMapping幾個(gè)段之外,Heap和Stack空間的總量有限,是此消彼長(zhǎng)的。因此遇到這個(gè)錯(cuò)誤,可以通過(guò)兩個(gè)途徑解決:1.通過(guò) -Xss啟動(dòng)參數(shù)減少單個(gè)線(xiàn)程棧大小,這樣便能開(kāi)更多線(xiàn)程(當(dāng)然不能太小,太小會(huì)出現(xiàn)StackOverflowError);2.通過(guò)-Xms -Xmx 兩參數(shù)減少Heap大小,將內(nèi)存讓給Stack(前提是保證Heap空間夠用)。

  java.lang.OutOfMemoryError: PermGen space

  原因:Permanent Generation空間不足,不能加載額外的類(lèi)。

  解決:調(diào)整-XX:PermSize= -XX:MaxPermSize= 兩個(gè)參數(shù)來(lái)增大PermGen內(nèi)存。一般情況下,這兩個(gè)參數(shù)不要手動(dòng)設(shè)置,只要設(shè)置-Xmx足夠大即可,JVM會(huì)自行選擇合適的PermGen大小。

  java.lang.OutOfMemoryError: Requested array size exceeds VM limit

  原因:這個(gè)錯(cuò)誤比較少見(jiàn)(試著new一個(gè)長(zhǎng)度1億的數(shù)組看看),同樣是由于Heap空間不足。如果需要new一個(gè)如此之大的數(shù)組,程序邏輯多半是不合理的。

  解決:修改程序邏輯吧。或者也可以通過(guò)-Xmx來(lái)增大堆內(nèi)存。

  在GC花費(fèi)了大量時(shí)間,卻僅回收了少量?jī)?nèi)存時(shí),也會(huì)報(bào)出OutOfMemoryError ,我只遇到過(guò)一兩次。當(dāng)使用-XX:+UseParallelGC或-XX:+UseConcMarkSweepGC收集器時(shí),在上述情況下會(huì)報(bào)錯(cuò),在 HotSpot GC Turning文檔 上有說(shuō)明:

  The parallel(concurrent) collector will throw an OutOfMemoryError if too much time is being spent in garbage collection: if more than 98% of the total time is spent in garbage collection and less than 2% of the heap is recovered, an OutOfMemoryError will be thrown.

  對(duì)這個(gè)問(wèn)題,一是需要進(jìn)行GC turning,二是需要優(yōu)化程序邏輯。

  java.lang.StackOverflowError

  原因:這也內(nèi)存溢出錯(cuò)誤的一種,即線(xiàn)程棧的溢出,要么是方法調(diào)用層次過(guò)多(比如存在無(wú)限遞歸調(diào)用),要么是線(xiàn)程棧太小。

  解決:優(yōu)化程序設(shè)計(jì),減少方法調(diào)用層次;調(diào)整-Xss參數(shù)增加線(xiàn)程棧大小。

  IOException: Too many open files

  原因: 這個(gè)是由于TCP co


【JAVA常見(jiàn)錯(cuò)誤處理方法】相關(guān)文章:

java的常見(jiàn)排序方法03-17

java錯(cuò)誤處理基本知識(shí)07-18

常見(jiàn)的Java問(wèn)題與解析05-20

常見(jiàn)的Java問(wèn)題與解答08-15

java虛方法05-16

java入門(mén)方法04-24

java調(diào)用的方法04-20

java方法重寫(xiě)的方法分析03-03

Java設(shè)計(jì)常見(jiàn)問(wèn)題08-12