JAVA常見錯誤處理方法
Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。本文特意為大家收集整理了JAVA常見錯誤處理方法,希望大家喜歡!
fMemoryError: Java heap space
原因:Heap內存溢出,意味着Young和Old generation的內存不夠。
解決:調整java啟動參數-Xms -Xmx 來增加Heap內存。
fMemoryError: unable to create new native thread
原因:Stack空間不足以創建額外的線程,要麼是創建的線程過多,要麼是Stack空間確實小了。
解決:由於JVM沒有提供參數設置總的stack空間大小,但可以設置單個線程棧的大小;而系統的用户空間一共是3G,除了Text/Data/BSS /MemoryMapping幾個段之外,Heap和Stack空間的總量有限,是此消彼長的。因此遇到這個錯誤,可以通過兩個途徑解決:1.通過 -Xss啟動參數減少單個線程棧大小,這樣便能開更多線程(當然不能太小,太小會出現StackOverflowError);2.通過-Xms -Xmx 兩參數減少Heap大小,將內存讓給Stack(前提是保證Heap空間夠用)。
fMemoryError: PermGen space
原因:Permanent Generation空間不足,不能加載額外的類。
解決:調整-XX:PermSize= -XX:MaxPermSize= 兩個參數來增大PermGen內存。一般情況下,這兩個參數不要手動設置,只要設置-Xmx足夠大即可,JVM會自行選擇合適的PermGen大小。
fMemoryError: Requested array size exceeds VM limit
原因:這個錯誤比較少見(試着new一個長度1億的`數組看看),同樣是由於Heap空間不足。如果需要new一個如此之大的數組,程序邏輯多半是不合理的。
解決:修改程序邏輯吧。或者也可以通過-Xmx來增大堆內存。
在GC花費了大量時間,卻僅回收了少量內存時,也會報出OutOfMemoryError ,我只遇到過一兩次。當使用-XX:+UseParallelGC或-XX:+UseConcMarkSweepGC收集器時,在上述情況下會報錯,在 HotSpot GC Turning文檔 上有説明:
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.
對這個問題,一是需要進行GC turning,二是需要優化程序邏輯。
kOverflowError
原因:這也內存溢出錯誤的一種,即線程棧的溢出,要麼是方法調用層次過多(比如存在無限遞歸調用),要麼是線程棧太小。
解決:優化程序設計,減少方法調用層次;調整-Xss參數增加線程棧大小。
IOException: Too many open files
原因: 這個是由於TCP co
-
Java Class文件是什麼
Class類是在Java語言中定義一個特定類的實現。一個類的定義包含成員變量,成員方法,還有這個類實現的接口,以及這個類的父類。Class類的對象用於表示當前運行的Java應用程序中的類和接口。比如:每個數組均屬於一個Class類對象,所有具有相同元素類型和維數的數組共享...
-
java面試自我介紹範文
引導語:Java面試自我介紹應以突顯自我能力為主,表現出與眾不同的才幹和學識。以下是本站小編分享給大家的2017java面試自我介紹範文,歡迎閲讀!範文一我叫趙,我的同學更都喜歡稱呼我的英文名字,叫,六月的意思,是君的諧音。我來自安徽的市,在21年我以市全市第一名的成績...
-
java的nio的使用示例分享
在jdk1.4中提出的技術,非阻塞IO,採用的是基於事件處理方式。傳統的io技術為阻塞的`,比如讀一個文件,惹read方法是阻塞的,直到有數據讀入。歸納為:1、javaio為阻塞,在打開一個io通道後,read將一直等待在端口一邊讀取字節內容,如果沒有內容進來,read相當於阻塞掉了。2、在1...
-
Java 異步回調機制實例解析
回調,回調。要先有調用,才有調用者和被調用者之間的回調。下面小編給大家介紹Java異步回調機制實例解析,歡迎閲讀!Java異步回調機制實例解析一、什麼是回調軟件模塊之間總是存在着一定的接口,從調用方式上,可以把他們分為三類:同步調用、回調和異步調用。回調是一種...