Java groovy內存回收測試步驟解析
問題
在使用我們的開發平臺時,客戶懷疑我們的動態執行腳本會導致系統內存回收的問題,導致系統不響應,為此我專門針對這個問題,做一下詳細的測試,看看是不是到底有什么影響。
測試步驟
1.使用編寫一個控制器方法,這個控制器方法只做一個解析java腳本的代碼。
2.配置tomcat的內存。
set JAVA_OPTS=-Xms1g -Xmx1g
3.使用APPACHE 的ab命令進行壓測。
ab -c5 -t3600 http://192.168.1.200:8080/jsaas/testGroovyEngine.do
使用ab命令并發5次,壓測1個小時。
這個時候壓測,發現metadata的數據會增加,但是到達300多m的時候,這個數據會進行回收,但是這個時候訪問會變慢。
重新調整jvm參數
set JAVA_OPTS=-Xms1g -Xmx1g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m
將metadata 數據的大小固定為256m
在進行測試發現:
在進行壓測的時候,裝入的類會增加,但是當metadata 數據到達256m的時候,jvm 會進行有規律的回收,訪問這個url性能也沒有變差。
得出的結論是:
1.使用groovy 確實會導致臨時裝載類增加。
2.我們需要設置metadata的數據,當metadata到達這個數值時就回收,這樣不至于占用太多的堆內存,導致系統性能下降。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。
相關文章:
1. docker compose idea CreateProcess error=2 系統找不到指定的文件的問題2. 將properties文件的配置設置為整個Web應用的全局變量實現方法3. 一文秒懂idea的git插件跟翻譯插件4. python爬蟲利用代理池更換IP的方法步驟5. JS中的常見數組遍歷案例詳解(forEach, map, filter, sort, reduce, every)6. Vue+express+Socket實現聊天功能7. 在Vue 中獲取下拉框的文本及選項值操作8. Python語言規范之Pylint的詳細用法9. SpringBoot集成SSM、Dubbo、Redis、JSP的案例小結及思路講解10. python中pandas.read_csv()函數的深入講解
