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