最近作個項目須要導excel表數據到數據庫,導入時就會報 java.lang.OutOfMemoryError: Java heap space錯誤,後來問度娘,才知道是內存的設置的問題;html
解決辦法:手動設置tomcat內存大小;java
狀況一;若是是直接在tomcat部署war文件,就直接在tomcat安裝路徑下/bin/catalina.bat最前面加入:數據庫
set JAVA_OPTS=-Xms384m -Xmx384mtomcat
具體含義是:安全
內存設置 | -Xms384M | 設置JVM啓動時的堆(heap)內存大小
內存設置 | -Xmx384M | 設置JVM能夠擴展的最大堆(heap)內存大小
調試安全 | -Djava.security.debug=all | 打開全部有關安全的調試輸出
調試 | -enableassertions | 容許聲明檢查(給開發人員調試代碼用的)
調試 | -verbose:class | 容許類加載的詳細調試輸出
調試 | -verbose:gc | 容許垃圾回收器的調試輸出
圖像 | -Djava.awt.headless=true | 容許JVM運行在在沒有安裝圖像顯示軟件的狀況下
本地化 | -Duser.language=en | 設置Tomcat用戶的語言包
本地化 | -Dfile.encoding=UTF-8 | 設置Tomcat用戶的默認文件編碼
網絡 | -Djava.net.preferIPv4Stack=true | 讓JVM用IPv4代替IPv6,Tomcat在FreeBSD系統下須要設置該參數網絡
從上表能夠看出,堆(heap)內存設置是最重要的。若是Tomcat的堆內存設置過小,可能會形成運行速度慢或者報出OutOfMemoryError的錯誤並形成不可知反應。若是設置太大了,又會浪費系統內存,甚至可能影響其餘程序的正常運行。
若是Tomcat JVM的啓動堆內存小而擴展內存大,那麼在JVM在擴展內存時會影響Tomcat的反應,形成速度變慢,因此最好是把Xms和Xmx設置同樣大小,至於具體內存大小能夠根據狀況進行測試和調整,後面將進一步討論。
使用JAVA_OPTS參數來加載各類JVM啓動參數,例如你想讓Tomcat JVM運行在調試模式,而且遠程用8000端口進行監控,能夠使用:less
JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"socket
這會容許你鏈接一個JPDA遠程調試器(例如各類Java IDE)。
若是你想經過JMX遠程終端來作本地Tomcat監控的話能夠:測試
JAVA_OPTS="-Dcom.sun.management.jmxremote=true \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false"編碼
這樣你能夠用JMX控制檯(例如JDK中帶的jconsole)來鏈接本地Tomcat,若是須要鏈接遠程的,則:
JAVA_OPTS="-Dcom.sun.management.jmxremote.port=8008 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.password.file=/path/to/pw/file"
若是你要設置Tomcat本地化語言,則:
$ LANG=en_US
$ catalina.sh start
或者用
-Duser.language=en 。
內容來自 :http://www.blogjava.net/javaren/articles/259792.html