最常见的JVM配置当属内存分配,因为在绝大多数情况下,JVM默认分配的内存可能不能够满足我们的需求,特别是在生产环境,此时需要手动修改tomcat启动时的内存参数分配。

1. JVM内存模型

我们在进行内存参数配置主要是围绕着堆内存来进行操作。

2. JVM配置选项

Windows平台(catalina.bat)

set JAVA_OPTS=-server -Xms2048m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:SurvivorRatio=8

LInux平台(catalina.sh)

set JAVA_OPTS="-server -Xms1024m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:SurvivorRatio=8"

注意:我们在设置的时候,一般将Xms(初始堆内存)与Xmx(最大堆内存)设置为一样大,这样JVM在运行期间不会开辟内存空间,这样可以提升一点性能。

参数说明:

参数 含义
-server 表示当前以服务端的形式运行
-Xms 堆内存的初始大小
-Xmx 堆内存的最大内存
-Xmn 新生代内存大小,官方建议是整个堆的3/8
-XX:MetaspaceSize 元空间内存初始大小,在JDK1.8版本之前配置为 -XX:PermSize(永久代)
XX:MaxMetaspaceSize 元空间内存的最大大小,在JDK1.8版本之前配置为 -XX:MaxPermSize(永久代)

-XX:InitialCodeCacheSize

-XX:ReservedCodeCacheSize

代码缓存区大小
-XX:NewRatio

设置新生代和老年代的相对大小比例,这种方式的优点是新生代大小会随着整个堆大小动态

扩展。

例如:-XX:NewRatio=3 指定  老年代/新生代 = 3/1 。老年代占堆大小的3/4  新生代占 1/4

-XX:SurvivorRatio

指定伊甸园区(Eden)与幸存区(To)大小比例。

例如:-XX:SurvivorRatio=10 表示Eden是To大小的10倍(也是幸存区From的10倍)。

所以Eden占新生代大小的10/12 ,幸存区From和幸存区To每个占新生代的1/12.

注意:两个幸存区永远是一样大

打开tomcat的bin/catalina.bat,将我们的配置信息配置在其中,如图:

保存,重启服务器,在浏览器输入网址,如图:

点击Manager APP或者直接输入网址http://localhost:8080/manager/html,如图:

点击Server Status,如图:

可以看出,堆内存Heap memory的值之和(546.5+1365.5+68x2)就是我们设置的2048

注意:网页上显示的PS Survivor Space只是幸存区的一半,因为幸存区由两部分组成(From和To,大小一样),所以需要乘以2

Tomcat10——JVM内存参数配置相关推荐

  1. jvm内存参数配置_“步步精心”-常用JVM配置参数

    本文主要内容: Trace跟踪参数 堆的分配参数 栈的分配参数 零.在IDE的后台打印GC日志: 既然学习JVM,阅读GC日志是处理Java虚拟机内存问题的基础技能,它只是一些人为确定的规则,没有太多 ...

  2. jvm内存参数配置_idea中设置JVM参数,简单理解JVM常见参数,JVM调优简单入门

    前面学习了JVM的内存分布,今天就来验证下.顺便通过测试学习一下JVM的几个参数,不过测试是在idea中,所以先要在idea上设置JVM参数. 一.idea设置全局的JVM参数 一共三步,第一步在菜单 ...

  3. jvm内存参数配置_JVM内存结构和Java内存模型

    一.JVM 首先看一张JVM结构图(某度找的) 主要看运行时数据区,里边有方法区,堆,java虚拟机栈,本地方法栈,程序计数器.其中方法区和堆是线程共享的,也是JVM进行垃圾收集的区域,java虚拟机 ...

  4. JVM内存参数详解以及配置调优

    基本概念: PermGen space:全称是Permanent Generation space.就是说是永久保存的区域,用于存放Class和Meta信息,Class在被Load的时候被放入该区域 ...

  5. java jvm 内存参数_深入详解JVM内存模型与JVM参数详细配置

    对于大多数应用来说,Java 堆(Java Heap)是Java 虚拟机所管理的内存中最大的一块.Java 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建. JVM内存结构 由上图可以清楚的看到 ...

  6. JVM常用内存参数配置

    一.    常用参数 -Xms JVM启动时申请的初始Heap值,默认为操作系统物理内存的1/64但小于1G.默认当空余堆内存大于70%时,JVM会减小heap的大小到-Xms指定的大小,可通过-XX ...

  7. Java架构学习(十二)java内存结构新生代老年代JVM参数调优堆内存参数配置解决堆栈溢出

    JVM参数调优与垃圾回收机制 一.java内存结构 Java内存模型:是多线程里面的,jmm与线程可见性有关 Java内存结构:是JVM虚拟机存储空间. Java内存结构图 Java内存机构分为:方法 ...

  8. JVM:JVM常见参数配置

    JVM常见参数配置 JVM的参数类型: 1.标配参数:-version,-help,-showversion 2.x参数(了解):-Xint:解释执行:-Xcomp:第一次使用就编译成本地代码:-Xm ...

  9. Docker 容器 jvm 内存参数调整优化

    前言 在使用Docker部署java 项目时,发现容器占用内存很高,导致服务器内存压力大,一个简单的boot项目,占用达到1G多内存,有些容器甚至达到快3G内存,并且发现java -jar 启动的项目 ...

最新文章

  1. java多线程(三)
  2. vue的$nextTick使用总结,this.$refs为undefined的解决办法,element Ui的树形控件setCheckedKeys方法无法使用
  3. 哈佛最新成果:温度高于25℃可降低新冠病毒传染率,但不足以完全控制疫情...
  4. torch.max和torch.softmax
  5. autocad2014 第二次打开闪退_cad2014闪退的原因和解决方法
  6. python中join的用法
  7. plsql(轻量版)_记录类型2
  8. 金哥和你一起学模型压缩——结构篇
  9. 基于QItemDelegate的例子1 SpinBoxDelegate
  10. Exchange服务器系统蓝屏及脱域后解决办法
  11. 2019语言与智能技术竞赛
  12. python用cartopy包画地图_python – 使用Cartopy在地图上显示图像时的投影问题
  13. Web应用程序测试工具Top20
  14. MIMIC-IV v2.0数据库
  15. vue:hadoop@1.0.0 dev: `webpack-dev-server --inline --progress --config build/webpack.dev.conf.js
  16. 中文文字检测与识别的评测方法
  17. QT制作360悬浮球
  18. IP组播协议——IGMP协议之IGMPv1
  19. java中 复制到下一行_java代码复制到下一行
  20. DetectoRS: Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution论文学习

热门文章

  1. win7中删除桌面删不掉的IE图标方法
  2. 如何在Oracle中批量删除数据
  3. java多态编译,java多态 运行时多态和编译时多态
  4. 杀掉叽哩瓜叽(jlguaji.exe)的两种方法
  5. c语言float怎么表示,c语言中float是如何表示的
  6. 百度在线人脸识别API简单实现
  7. layui文件树Dtree的使用
  8. 大神的ACM训练计划(详细)
  9. java 经纬度 电子围栏6_给定坐标点,判断是否在某区域范围内 地理围栏算法
  10. keystore生成 linux_如何生成KeyStore