国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JAVA HEAP SPACE解決方法和JVM參數(shù)設(shè)置

這篇具有很好參考價(jià)值的文章主要介紹了JAVA HEAP SPACE解決方法和JVM參數(shù)設(shè)置。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

JAVA HEAP SPACE解決方法和JVM參數(shù)設(shè)置

  • JAVA HEAP SPACE解決方法和JVM參數(shù)設(shè)置
    • 原因分析
    • 設(shè)置
    • 異常分析
    • Java堆的管理—垃圾回收提到一下幾點(diǎn),很不錯(cuò),或許可以作為寫程序時(shí)候的準(zhǔn)則:
    • jvm 內(nèi)存查看與分析工具

JAVA HEAP SPACE解決方法和JVM參數(shù)設(shè)置

在JVM中如果98%的時(shí)間是用于GC(Garbage Collection)且可用的 Heap size 不足2%的時(shí)候?qū)伋霎惓P畔?,java.lang.OutOfMemoryError: Java heap space。
所以產(chǎn)生這個(gè)異樣的原因通常有兩種:
1.程序中出現(xiàn)了死循環(huán)
2.程序占用內(nèi)存太多,超過了JVM堆設(shè)置的最大值。

原因分析

第二種情況,我們手工擴(kuò)大JVM堆的參數(shù)設(shè)置。JVM堆的設(shè)置是指java程序運(yùn)行過程中JVM可以調(diào)配使用的內(nèi)存空間的設(shè)置。在JVM啟動(dòng)時(shí),JVM堆會(huì)自動(dòng)設(shè)置heap size值。通常情況下,初始空間(即-Xms)默認(rèn)值是物理內(nèi)存的1/64,最大空間是物理內(nèi)存的1/4??梢岳肑VM提供的-Xmn -Xms -Xmx等選項(xiàng)可進(jìn)行設(shè)置。這里對各個(gè)參數(shù)的意義解釋一下:
-Xms:初始值
-Xmx:最大值
-Xmn:最小值

Heap
Size的設(shè)置不宜太小,也不宜太大。若設(shè)置太小程序的響應(yīng)速度會(huì)變慢了,因?yàn)镚C占用了更多的時(shí)間,而應(yīng)用分配到的執(zhí)行時(shí)間較少。太大也會(huì)造成空間的浪費(fèi),而且也會(huì)影響其他程序的正常運(yùn)行。Heap
Size 最大最好不要超過可用物理內(nèi)存的80%。建議將-Xms和-Xmx選項(xiàng)設(shè)置為相同,而-Xmn為1/4的-Xmx值。

設(shè)置的方法主要有以下幾個(gè):

  1. 就是在執(zhí)行JAVA類文件時(shí)加上這個(gè)參數(shù),其中className是需要執(zhí)行的確類名。(包括包名)如:java -Xms32m -Xmx800m className 這個(gè)不僅解決問題了,而且執(zhí)行的速度比沒有設(shè)置的時(shí)候快很多。

  2. 可以在windows更改系統(tǒng)環(huán)境變量加上JAVA_OPTS=-Xms64m -Xmx512m。

  3. 如果用的tomcat,在windows下,可以在C: omcat5.5.9incatalina.bat(具體路徑根據(jù)自己tomcat的位置而定) 中加上:set JAVA_OPTS=-Xms64m -Xmx256m (大小依自己內(nèi)存而定)位置在: rem Guess CATALINA_HOME if not defined 這行的下面加合適.

  4. 如果是linux系統(tǒng)Linux 在{tomcat_home}/bin/catalina.sh的前面,加 set JAVA_OPTS=’-Xms64 -Xmx512’

設(shè)置

1、設(shè)置環(huán)境變量
set JAVA_OPTS= -Xms32m -Xmx512m
可以根據(jù)自己機(jī)器的內(nèi)存進(jìn)行更改,但本人測試這種方法并沒有解決問題??赡苁沁€有哪里需要設(shè)置。
2、 java -Xms32m -Xmx800m className
就是在執(zhí)行JAVA類文件時(shí)加上這個(gè)參數(shù),其中className是需要執(zhí)行的確類名。(包括包名)
這個(gè)解決問題了。而且執(zhí)行的速度比沒有設(shè)置的時(shí)候快很多。

異常分析

使用Java程序從數(shù)據(jù)庫中查詢大量的數(shù)據(jù)時(shí)出現(xiàn)異常:
java.lang.OutOfMemoryError: Java heap space

在JVM中如果98%的時(shí)間是用于GC且可用的 Heap size 不足2%的時(shí)候?qū)伋龃水惓P畔ⅰ?/p>

JVM堆的設(shè)置是指java程序運(yùn)行過程中JVM可以調(diào)配使用的內(nèi)存空間的設(shè)置.

JVM在啟動(dòng)的時(shí)候會(huì)自動(dòng)設(shè)置Heap
size的值,其初始空間(即-Xms)是物理內(nèi)存的1/64,最大空間(-Xmx)是物理內(nèi)存的1/4??梢岳肑VM提供的-Xmn -Xms
-Xmx等選項(xiàng)可進(jìn)行設(shè)置。 例如:java -jar -Xmn16m -Xms64m -Xmx128m MyApp.jar

如果Heap Size設(shè)置偏小,除了這些異常信息外,還會(huì)發(fā)現(xiàn)程序的響應(yīng)速度變慢了。GC占用了更多的時(shí)間,而應(yīng)用分配到的執(zhí)行時(shí)間較少。

Heap Size 最大不要超過可用物理內(nèi)存的80%,一般的要將-Xms和-Xmx選項(xiàng)設(shè)置為相同,而-Xmn為1/4的-Xmx值。

Heap size的 -Xms -Xmn 設(shè)置不要超出物理內(nèi)存的大小。否則會(huì)提示“Error occurred during initialization of VM Could not reserve enough space for object
heap”。

Java堆的管理—垃圾回收提到一下幾點(diǎn),很不錯(cuò),或許可以作為寫程序時(shí)候的準(zhǔn)則:

(1)不要試圖去假定垃圾收集發(fā)生的時(shí)間,這一切都是未知的。比如,方法中的一個(gè)臨時(shí)對象在方法調(diào)用完畢后就變成了無用對象,這個(gè)時(shí)候它的內(nèi)存 就可以被釋放。

(2)Java中提供了一些和垃圾收集打交道的類,而且提供了一種強(qiáng)行執(zhí)行垃圾收集的方法–調(diào)用System.gc(),但這同樣是個(gè)不確定 的方法。Java 中并不保證每次調(diào)用該方法就一定能夠啟動(dòng)垃圾收集,它只不過會(huì)向JVM發(fā)出這樣一個(gè)申請,到底是否真正執(zhí)行垃圾收集,一切都是個(gè)未知數(shù)。

(3)挑選適合自己的垃圾收集器。一般來說,如果系統(tǒng)沒有特殊和苛刻的性能要求,可以采用JVM的缺省選項(xiàng)。否則可以考慮使用有針對性的垃圾收 集器,比如增量收集器就比較適合實(shí)時(shí)性要求較高的系統(tǒng)之中。系統(tǒng)具有較高的配置,有比較多的閑置資源,可以考慮使用并行標(biāo)記/清除收集器。

(4)關(guān)鍵的也是難把握的問題是內(nèi)存泄漏。良好的編程習(xí)慣和嚴(yán)謹(jǐn)?shù)木幊虘B(tài)度永遠(yuǎn)是最重要的,不要讓自己的一個(gè)小錯(cuò)誤導(dǎo)致內(nèi)存出現(xiàn)大漏洞。

(5)盡早釋放無用對象的引用。

jvm 內(nèi)存查看與分析工具

1:gc日志輸出

在jvm啟動(dòng)參數(shù)中加入

-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimestamps
-XX:+PrintGCApplicationStopedTime

jvm將會(huì)按照這些參數(shù)順序輸出gc概要信息,詳細(xì)信息,gc時(shí)間信息,gc造成 的應(yīng)用暫停時(shí)間。如果在剛才的參數(shù)后面加入?yún)?shù) -Xloggc:文件路徑,gc信息將會(huì)輸出到指定的文件中。其他參數(shù)還有
-verbose:gc和-XX:+PrintTenuringDistribution等。

2:jconsole

jconsole是jdk自帶的一個(gè)內(nèi)存分析工具,它提供了圖形界面。可以查看到被監(jiān)控的jvm的內(nèi)存信息,線程信息,類加載信息,MBean信息。

jconsole位于jdk目錄下的bin目錄,在windows下是jconsole.exe,在unix和linux下是
jconsole.sh,jconsole可以監(jiān)控本地應(yīng)用,也可以監(jiān)控遠(yuǎn)程應(yīng)用。

要監(jiān)控本地應(yīng)用,執(zhí)行jconsole pid,pid就是運(yùn)行的java進(jìn)程id,如果不帶上pid參數(shù),則執(zhí)行jconsole命令后,會(huì)看到一個(gè)對話框彈出,上面列出了本地的java進(jìn) 程,可以選擇一個(gè)進(jìn)行監(jiān)控。如果要遠(yuǎn)程監(jiān)控,則要在遠(yuǎn)程服務(wù)器的jvm參數(shù)里加入一些東西,因?yàn)閖console的遠(yuǎn)程監(jiān)控基于jmx的,關(guān)于 jconsole詳細(xì)用法,請見專門介紹jconsle的文章,我也會(huì)在博客里專門詳細(xì)介紹jconsole。文章來源地址http://www.zghlxwxcb.cn/news/detail-463424.html

到了這里,關(guān)于JAVA HEAP SPACE解決方法和JVM參數(shù)設(shè)置的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • DBeaver導(dǎo)數(shù)據(jù)拋錯(cuò) Java heap space

    DBeaver導(dǎo)數(shù)據(jù)拋錯(cuò) Java heap space

    從表中導(dǎo)出數(shù)據(jù)時(shí)報(bào)錯(cuò): 原因: DBeaver內(nèi)存設(shè)置過小,需要調(diào)整 找到配置文件:安裝目錄-dbeaver.init Xms為最小內(nèi)存,默認(rèn) 64M Xmx為最大內(nèi)存,默認(rèn) 1024M,調(diào)大此值即可,如10240M

    2024年02月05日
    瀏覽(17)
  • Java內(nèi)存溢出(outofmemory:Java heap space)更改堆大小

    Java內(nèi)存溢出(outofmemory:Java heap space)更改堆大小

    在跑一個(gè)項(xiàng)目的時(shí)候需要構(gòu)建大量對象,導(dǎo)致出現(xiàn)內(nèi)存溢出錯(cuò)誤。去網(wǎng)上查需要修改堆大小,于是按照網(wǎng)上80%的方法修改了配置,結(jié)果依然內(nèi)存溢出。于是,開啟了半天的刨根問底之旅。 首先是按照網(wǎng)上說的方法,打開idea在上方找到help,然后點(diǎn)擊edit custom vm options, 然后就

    2024年02月12日
    瀏覽(18)
  • es內(nèi)存溢出啟動(dòng)報(bào)錯(cuò)java.lang.OutOfMemoryError: Java heap space

    es內(nèi)存溢出啟動(dòng)報(bào)錯(cuò)java.lang.OutOfMemoryError: Java heap space

    問題: es容器自己停止,重啟之后啟動(dòng)失敗,報(bào)錯(cuò)如下: 原因: 容器中es由于數(shù)據(jù)量過大,超過了elasticsearch進(jìn)程的最大內(nèi)存量,elasticsearch 會(huì)將啟動(dòng)腳本中的JAVA_OPTS 選項(xiàng)傳遞給 JVM 來啟動(dòng)elasticsearch. 其中最重要的一個(gè)參數(shù)是 -Xmx ,此參數(shù)用于控制系統(tǒng)分配給elasticsearch 進(jìn)程的

    2023年04月14日
    瀏覽(24)
  • kafka消費(fèi)報(bào)錯(cuò)卡死:內(nèi)存溢出OutOfMemoryError: Java heap space

    我們信控平臺使用 Java 語言開發(fā), Spring Cloud 微服務(wù)架構(gòu),采用容器化部署,所有服務(wù)都部署在 docker 里面,使用 docker-compose 進(jìn)行管理,使用 portainer 進(jìn)行監(jiān)控 平臺部署客戶現(xiàn)場后,一切功能正常,客戶已經(jīng)使用三個(gè)月左右。最后一次更新時(shí)一個(gè)月前,代碼版本也比較新 客戶

    2024年02月15日
    瀏覽(25)
  • 使用jmeter做性能測試時(shí)遇到j(luò)ava.lang.OutOfMemoryError: Java heap space. 提示怎么辦

    使用jmeter做性能測試時(shí)遇到j(luò)ava.lang.OutOfMemoryError: Java heap space. 提示怎么辦

    使用jmeter做性能測試遇到j(luò)ava.lang.OutOfMemoryError: Java heap space.時(shí)是jvm的問題,需要調(diào)大jvm的內(nèi)存,windows壓力機(jī)通過編輯bin文件下的jmeter.bat文件來修改jvm的內(nèi)存大小。在jmeter.bat文件的編輯狀態(tài)下查詢if not defined HEAP可快速查找到需要修改的位置。 修改前為默認(rèn)大?。?修改后(根

    2024年02月16日
    瀏覽(24)
  • 接口報(bào)錯(cuò)原因分析:handler dispatch failed;nested exceptionis java.lang.outofMemoryError:JAVA heap space

    java.lang.OutOfMemoryError: Java heap space ?解決方法 這個(gè)問題的根源是jvm虛擬機(jī)的默認(rèn)Heap大小是64M,可以通過設(shè)置其最大和最小值來實(shí)現(xiàn).設(shè)置的方法主要是幾個(gè). 加上 JAVA_OPTS=-Xms64m -Xmx512m Linux 在{tomcat_home}/bin/catalina.sh的前面,加

    2024年02月08日
    瀏覽(37)
  • 【JVM】JVM堆內(nèi)存(heap)詳解

    【JVM】JVM堆內(nèi)存(heap)詳解

    JAVA堆內(nèi)存管理是影響性能主要因素之一。 堆內(nèi)存溢出是JAVA項(xiàng)目非常常見的故障,在解決該問題之前,必須先了解下JAVA堆內(nèi)存是怎么工作的。 先看下JAVA堆內(nèi)存是如何劃分的,如圖: JVM內(nèi)存劃分為堆內(nèi)存和非堆內(nèi)存,堆內(nèi)存分為年輕代(Young Generation)、老年代(Old Generatio

    2024年02月09日
    瀏覽(21)
  • Error occurred during initialization of VM Could not reserve enough space for 2097152KB object heap

    Error occurred during initialization of VM Could not reserve enough space for 2097152KB object heap

    在啟動(dòng)elasticsearch.bat時(shí)會(huì)直接閃退,大概率是因?yàn)閮?nèi)存分配不足導(dǎo)致直接打不開elasticsearch。 于是我直接在終端運(yùn)行,想看問題出在哪,此時(shí)報(bào)錯(cuò)如題所示 找到elasticsearch文件夾下config子文件夾,打開找到 jvm.options ,對內(nèi)存分配進(jìn)行調(diào)整 使用記事本或者Notepad++打開,如圖: 這

    2024年02月07日
    瀏覽(23)
  • 【jvm系列-13】jvm性能調(diào)優(yōu)篇---參數(shù)設(shè)置以及日志分析

    【jvm系列-13】jvm性能調(diào)優(yōu)篇---參數(shù)設(shè)置以及日志分析

    JVM系列整體欄目 內(nèi)容 鏈接地址 【一】初識虛擬機(jī)與java虛擬機(jī) https://blog.csdn.net/zhenghuishengq/article/details/129544460 【二】jvm的類加載子系統(tǒng)以及jclasslib的基本使用 https://blog.csdn.net/zhenghuishengq/article/details/129610963 【三】運(yùn)行時(shí)私有區(qū)域之虛擬機(jī)棧、程序計(jì)數(shù)器、本地方法棧 https

    2024年02月06日
    瀏覽(30)
  • java八股文面試[JVM]——JVM參數(shù)

    java八股文面試[JVM]——JVM參數(shù)

    參考:JVM學(xué)習(xí)筆記(一)_卷心菜不卷Iris的博客-CSDN博客 jdk1.7: jdk1.8: 面試題 :給定-Xms Xmx -Xmn 問 最大的eden區(qū)域是多少M(fèi)。 常用JVM參數(shù) 怎么對jvm進(jìn)行調(diào)優(yōu)?通過 參數(shù)配置 參數(shù) 備注 -Xms 初始堆大小。只要啟動(dòng),就占用的堆大小,默認(rèn)是內(nèi)存的1/64 -Xmx 最大堆大小。默認(rèn)是內(nèi)存

    2024年02月11日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包