溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Tomcat內(nèi)存溢出及內(nèi)存設(shè)置的方法是什么

發(fā)布時(shí)間:2022-01-19 16:07:06 來(lái)源:億速云 閱讀:310 作者:iii 欄目:開(kāi)發(fā)技術(shù)

今天小編給大家分享一下Tomcat內(nèi)存溢出及內(nèi)存設(shè)置的方法是什么的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

java的內(nèi)存有不同類型,不同類型的內(nèi)存溢出,處理方法不同,一定要看清是那種異常。通常會(huì)碰到內(nèi)存溢出異常有下面兩種:

  • java.lang.OutOfMemoryError: PermGen space

  • java.lang.OutOfMemoryError: Java heap space

PermGen space

PermGen space內(nèi)存溢出最常見(jiàn)。全稱是Permanent Generation space,是指內(nèi)存的永久保存區(qū)域。JDK8廢除了PermGen space,可以避免這種類型的內(nèi)存溢出,也無(wú)需設(shè)置該項(xiàng)。碰到這種內(nèi)存溢出建議升級(jí)到JDK8,或者設(shè)置Perm內(nèi)存。

Jspxcms的內(nèi)存設(shè)置建議值:

  • -XX:PermSize=128M:Perm內(nèi)存最小值。

  • -XX:MaxPermSize=512M:Perm內(nèi)存最大值。

Java heap space

Java heap space是堆內(nèi)存溢出。碰到這種內(nèi)存溢出,則需要加大堆內(nèi)存。

Jspxcms的內(nèi)存設(shè)置建議值:

  • -Xms256M:Heap內(nèi)存最小值。

  • -Xmx512M:Heap內(nèi)存最大值。內(nèi)存充裕的可以配置為-Xmx1024M

Java內(nèi)存類型

java內(nèi)存的類型分為:堆(Heap)和非堆(Non-heap)內(nèi)存。

堆(Heap)內(nèi)存。用于存放運(yùn)行時(shí)產(chǎn)生的數(shù)據(jù),如運(yùn)行時(shí)創(chuàng)建的對(duì)象、數(shù)組等數(shù)據(jù)。堆內(nèi)存快被占滿時(shí),會(huì)啟動(dòng)垃圾回收,釋放內(nèi)存空間。如果沒(méi)有設(shè)置Heap內(nèi)存,默認(rèn)是物理內(nèi)存的1/4?,F(xiàn)在內(nèi)存條容量越來(lái)越大,堆內(nèi)存溢出的情況相對(duì)較少。堆內(nèi)存溢出時(shí),出現(xiàn)的錯(cuò)誤信息是:java.lang.OutOfMemoryError: Java heap space。

非堆(Non-heap)內(nèi)存。就是PermGen。用于存放類的空間。默認(rèn)是物理內(nèi)存的1/64。java設(shè)計(jì)之初,各種程序規(guī)模相對(duì)較小,java類不多,并且運(yùn)行時(shí)類的數(shù)量是固定的,所以該空間默認(rèn)非常小,并且不進(jìn)行垃圾回收。隨著java的急劇發(fā)展,各種類庫(kù)逐漸增多,java程序也變得越來(lái)越龐大,類的數(shù)量急速膨脹,默認(rèn)非堆內(nèi)存的空間越來(lái)越不夠用。特別是反射機(jī)制與動(dòng)態(tài)代理技術(shù)的廣泛應(yīng)用,程序可以在運(yùn)行時(shí)創(chuàng)建類,使得PermGen內(nèi)存溢出變得更為常見(jiàn)。非堆內(nèi)存溢出時(shí),出現(xiàn)的錯(cuò)誤信息是:java.lang.OutOfMemoryError: PermGen space。

Java的設(shè)計(jì)者們也看到了這個(gè)問(wèn)題,在jdk8中廢除了PermGen,并且可以對(duì)存放類信息的空間進(jìn)行垃圾回收。所以碰到j(luò)ava.lang.OutOfMemoryError: PermGen space異常,最好的辦法就是升級(jí)到j(luò)dk8。

內(nèi)存設(shè)置

不同軟件、不同版本、不同情況下的設(shè)置方法各有不同。如eclipse的內(nèi)存設(shè)置在eclipse目錄下的eclipse.ini文件。

Tomcat解壓版Windows平臺(tái)

修改{TOMCAT_HOME}/bin/catalina.bat,在第二行(即在第一行@echo off之后)插入以下配置:

set JAVA_OPTS=-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m

Tomcat解壓版Linux平臺(tái)

修改TOMCAT_HOME/bin/catalina.sh,在第二行(即在第一行#!/bin/sh之后)插入以下配置:

JAVA_OPTS='-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m'

Tomcat安裝版

安裝版需要在控制面板里設(shè)置。-XX:PermSize=128m -XX:MaxPermSize=512m在Java Options里設(shè)置,-Xms256m -Xmx512m分別對(duì)應(yīng)Initial memory pool、Maximum memory pool。

Tomcat內(nèi)存溢出及內(nèi)存設(shè)置的方法是什么

WebLogic

修改{ORACLE_HOME}/user_projects/domains/base_domain/bin/setDomainEnv.sh(windows環(huán)境下是.cmd)

WLS_MEM_ARGS_64BIT="-Xms512m -Xmx1024m"
export WLS_MEM_ARGS_64BIT

WLS_MEM_ARGS_32BIT="-Xms512m -Xmx1024m"
export WLS_MEM_ARGS_32BIT

if [ "${JAVA_VENDOR}" != "HP" ] ; then
    if [ "${VM_TYPE}" = "HotSpot" ] ; then
        WLS_MEM_ARGS_64BIT="-Xms256m -Xmx1024m"
        export WLS_MEM_ARGS_64BIT
        WLS_MEM_ARGS_32BIT="-Xms256m -Xmx1024m"
        export WLS_MEM_ARGS_32BIT
    fi
fi

Eclipse中使用Maven啟動(dòng)Tomcat

在Eclipse中使用tomcat6:run或tomcat7:run啟動(dòng)Tomcat,需要在Run Configurations - JRE - VM arguments選項(xiàng)中設(shè)置。

Tomcat內(nèi)存溢出及內(nèi)存設(shè)置的方法是什么

以上就是“Tomcat內(nèi)存溢出及內(nèi)存設(shè)置的方法是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI