java程序运存扩容
線上程序隨著業(yè)務(wù)增多,運(yùn)行的越來(lái)越慢,初步判定是因?yàn)閮?nèi)存分配的太小導(dǎo)致頻繁的進(jìn)行GC和OOM,于是著手增加內(nèi)存上限。
增加內(nèi)存上限都知道是修改java啟動(dòng)的opt,因?yàn)榉?wù)容器是tomcat
首先是在tomcat的\bin\catalina.bat文件中修改
set JAVA_OPTS = "-server -Xms1024m -Xmx1024m?-XX:PermSize=128m -XX:MaxPermSize=512m"
但實(shí)際上不起作用,因?yàn)閏atalina.bat配置文件是由startup.bat加載的,線上業(yè)務(wù)是通過(guò)windows服務(wù)運(yùn)行,實(shí)際啟動(dòng)的是tomcat.exe,并不會(huì)應(yīng)用這個(gè)配置。
所以要修改tomcatw.exe
在windows運(yùn)行中輸入C:\tomcat\bin\tomcat6w.exe //ES//servername
注:
1.tomcat6w是tomcat6的,其他版本注意更換。
2.servername填入程序注冊(cè)的服務(wù)名
會(huì)打開(kāi)tomcat服務(wù)管理,在Java Options里加入虛擬機(jī)配置參數(shù)
在Initial memory pool和Maximum memory pool里填入原本要填的-Xms和-Xmx就可以了
但是這么做了以后還要注意一個(gè)問(wèn)題,就是jdk能分配的內(nèi)存可能是存在上限的。
如果分配超過(guò)上限會(huì)無(wú)法啟動(dòng)程序并且報(bào)錯(cuò):
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
這個(gè)上限值可以通過(guò)在運(yùn)行主機(jī)上通過(guò)cmd命令行運(yùn)行
java -Xmx1024M -version
這個(gè)命令來(lái)測(cè)試。
?
內(nèi)存改好后,可以通過(guò)任務(wù)管理器觀察內(nèi)存情況,或者登陸tomcat-->status查看 JVM.?
在程序中如果想查看內(nèi)存,可以使用下面這幾句:
System.out.println("Max?Memory?::::?"?+?(Runtime.getRuntime().maxMemory()/(1024*1024)?+?"M"));??
System.out.println("Free?Memory?::::?"?+?(Runtime.getRuntime().freeMemory()/(1024*1024)?+?"M"));
轉(zhuǎn)載于:https://www.cnblogs.com/Orange42/p/9208566.html
總結(jié)
以上是生活随笔為你收集整理的java程序运存扩容的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: DirtyCow漏洞复现(脏牛、大脏牛、
- 下一篇: poj2385 基础的动态规划算法 挑战