Linux JVM 内存动态配置:原理很简单, tomcat 启动前会先执行 bin 目录下的 setenv.sh 脚本 (默认不存在, 需手动创建), 在脚本中获取服务器内存进行动态分配即可。
- # ! /usr/bin / env bashMEM_SIZE = "1"#默认1Gfunction get_mem_k_size_func() {
- local _memSize = "$(vmstat -s -S K | awk 'NR==1{print $1}')"echo "${_memSize}"
- }
- function get_mem_m_size_func() {
- local _memSize = "$(vmstat -s -S M | awk 'NR==1{print $1}')"echo "${_memSize}"
- }
- function get_mem_g_size_func() {
- local _memSize = $(($(get_mem_m_size_func) / 1024)) echo "${_memSize}"
- }
- echo "[TOMCAT] TBM_HOME=$TBM_HOME"echo "[TOMCAT] runmode=$runmode"AVI_MEM_SIZE = $(get_mem_g_size_func) if [$ {
- AVI_MEM_SIZE
- } - gt 7];
- then#大于7G内存设置为4GMEM_SIZE = "4"elif[$ {
- AVI_MEM_SIZE
- } - gt 4];
- then#大于4G内存设置为2G MEM_SIZE = "2"fiexport JAVA_OPTS = "-server -Xms512m -Xmx${MEM_SIZE}g -Xss256k -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+UseG1GC -Dcom.sun.management.jmxremote.port=9089 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -DCmdbType=tbm"
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: