在Linux环境下设置Tomcat JVM,在/opt/tomcat/bin/catalina.sh文件中找到"# ----- Execute The Requested Command"位置,设置JVM如下:
# ----- Execute The Requested Command -----------------------------------------
JAVA_OPTS="$JAVA_OPTS -server -Xms3072m -Xmx3072m -XX:PermSize=1024M -XX:MaxPermSize=1024M"参数说明:
-Xms:设置JVM最小内存。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xmx:设置JVM最大可用内存。
-XX:NewSize:设置年轻代大小
-XX:PermSize:设置永久代大小
-XX:MaxPermSize:设置最大永久代大小JVM内存模型
1.1、Java栈
Java栈是与每一个线程关联的,JVM在创建每一个线程的时候,会分配一定的栈空间给线程。它主要用来存储线程执行过程中的局部变量,方法的返回值,以及方法调用上下文。栈空间随着线程的终止而释放。StackOverflowError:如果在线程执行的过程中,栈空间不够用,那么JVM就会抛出此异常,这种情况一般是死递归造成的。1.2、堆
Java中堆是由所有的线程共享的一块内存区域,堆用来保存各种JAVA对象,比如数组,线程对象等。1.3、Java 的内存模型
a、Young,年轻代(易被 GC)
Young 区被划分为三部分,Eden 区和两个大小严格相同的 Survivor 区,其中 Survivor 区间中,某一时刻只有其中一个是被使用的,另外一个留做垃圾收集时复制对象用,在 Young 区间变满的时候,minor GC 就会将存活的对象移到空闲的Survivor 区间中,根据 JVM 的策略,在经过几次垃圾收集后,任然存活于 Survivor 的对象将被移动到 Tenured 区间。b、Tenured,终身代
Tenured 区主要保存生命周期长的对象,一般是一些老的对象,当一些对象在 Young 复制转移一定的次数以后,对象就会被转移到 Tenured 区,一般如果系统中用了 application 级别的缓存,缓存中的对象往往会被转移到这一区间。c、Perm,永久代
主要保存 class,method,filed 对象,这部门的空间一般不会溢出,除非一次性加载了很多的类,不过在涉及到热部署的应用服务器的时候,有时候会遇到 java.lang.OutOfMemoryError : PermGen space 的错误,造成这个错误的很大原因就有可能是每次都重新部署,但是重新部署后,类的 class 没有被卸载掉,这样就造成了大量的 class 对象保存在了 perm 中,这种情况下,一般重新启动应用服务器可以解决问题。如果服务器只运行一个 Tomcat:
机子内存如果是 8G,一般 PermSize 配置是主要保证系统能稳定起来就行:
JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms6144m -Xmx6144m -XX:NewSize=1024m -XX:MaxNewSize=2048m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC"机子内存如果是 16G,一般 PermSize 配置是主要保证系统能稳定起来就行:
JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms13312m -Xmx13312m -XX:NewSize=3072m -XX:MaxNewSize=4096m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC"机子内存如果是 32G,一般 PermSize 配置是主要保证系统能稳定起来就行:
JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms29696m -Xmx29696m -XX:NewSize=6144m -XX:MaxNewSize=9216m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC"如果是开发机:
-Xms550m -Xmx1250m -XX:PermSize=550m -XX:MaxPermSize=1250m参数说明:
-Dfile.encoding:默认文件编码
-server:表示这是应用于服务器的配置,JVM 内部会有特殊处理的
-Xmx1024m:设置JVM最大可用内存为1024MB
-Xms1024m:设置JVM最小内存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-XX:NewSize:设置年轻代大小
-XX:MaxNewSize:设置最大的年轻代大小
-XX:PermSize:设置永久代大小
-XX:MaxPermSize:设置最大永久代大小
-XX:NewRatio=4:设置年轻代(包括 Eden 和两个 Survivor 区)与终身代的比值(除去永久代)。设置为 4,则年轻代与终身代所占比值为 1:4,年轻代占整个堆栈的 1/5
-XX:MaxTenuringThreshold=10:设置垃圾最大年龄,默认为:15。如果设置为 0 的话,则年轻代对象不经过 Survivor 区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在 Survivor 区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。
-XX:+DisableExplicitGC:这个将会忽略手动调用 GC 的代码使得 System.gc() 的调用就会变成一个空调用,完全不会触发任何 GC

tomcat8 JVM 优化相关推荐

  1. Tomcat8性能JVM优化

    JVM性能调优: Tomcat性能JVM优化,主要调堆内存空间和GC算法: 要求每次GC时间足够短,每段时间GC次数足够少: 常见 catalina.sh 配置修改如下: JAVA_OPTS=&quo ...

  2. Tomcat、JVM 优化配置

    为了让Tomcat稳定长期的运行,提高性能,默认的配置肯定是不行的. 从两个方向入手:Tomcat本身配置优化和JVM优化 环境:Tomcat8+JDK1.8+Linux Ubuntu16.04 一. ...

  3. jvm优化_使用Java流和In-JVM-Memory的超低延迟查询

    jvm优化 自然界的基本规则(例如光速和通用信息论)对我们可以从传统系统体系结构中获得的最大性能设置了明显的限制. 了解您作为Java开发人员如何使用JVM技术和Java流将性能提高几个数量级. 例如 ...

  4. jvm优化_镜像镜像–使用反射在运行时查看JVM内部

    jvm优化 开发人员:Takipi会告诉您何时新代码在生产中中断–了解更多 我们都习惯于在我们的日常工作中直接或通过利用反射的框架来运用反射. 它是Java和Scala编程的主要方面,它使我们使用的库 ...

  5. 多核服务器的JVM优化选项(转载)

    原文链接 现在多核CPU是主流.利用多核技术,可以有效发挥硬件的能力,提升吞吐量,对于Java程序,可以实现并发垃圾收集.但是Java利用多核技术也带来了一些问题,主要是多线程共享内存引起了.目前内存 ...

  6. Java之JVM 优化经验总结

    为什么80%的码农都做不了架构师?>>>    开始之前 Java 虚拟机有自己完善的硬件架构, 如处理器.堆栈.寄存器等,还具有相应的指令系统.JVM 屏蔽了与具体操作系统平台相关 ...

  7. 以独占方式锁定此配置文件失败.另一个正在运行_JVM深入解析:运行时数据区+HotSpot+JMM+堆+GC+JVM优化+类加载

    Java运行时数据区: Java虚拟机在执行Java程序的过程中会将其管理的内存划分为若干个不同的数据区域,这些区域有各自的用途.创建和销毁的时间,有些区域随虚拟机进程的启动而存在,有些区域则是依赖用 ...

  8. JVM 优化经验总结

    转载自  JVM 优化经验总结 开始之前 Java 虚拟机有自己完善的硬件架构, 如处理器.堆栈.寄存器等,还具有相应的指令系统.JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生 ...

  9. JVM优化之系统CPU飙高和GC频繁

    本文来说下JVM优化之系统CPU飙高和GC频繁 文章目录 概述 Full GC次数过多 CPU过高 某个线程进入WAITING状态 死锁 本文小结 概述 处理过线上问题的同学基本上都会遇到系统突然运行 ...

最新文章

  1. 简易RS232 建模二 (接收)
  2. 流形学习之LLE(LocallyLinearEmbedding)模型
  3. #1182 : 欧拉路·三(有向图的欧拉路)
  4. 2018年10月28日宁波dotnet社区活动回顾及下次活动预告
  5. SliceProceduralMesh的使用
  6. Android中PackageManager类的简单介绍
  7. 继三星之后 华为折叠屏手机Mate X发售日期或将延期至9月
  8. 牛年2021新年海报该有的样子!
  9. [JOYOI1326] 剑人合一
  10. 威纶触摸屏宏指令编程,字符串相关函数介绍与使用...
  11. 基于Chrome插件的微博超话自动签到
  12. 微博上一些有用的话(二)
  13. 计算机应届生的面试经验
  14. python绘制直方图显示数字_Python | 数据可视化汇总
  15. Milvus 2.1 版本更新 - 简单可信赖、性能持续提升
  16. 定积分及其应用知识点总结_高中定积分知识点总结
  17. 自定义Teams会议录像提示
  18. 手把手教你用jQuery Mobile做相册
  19. 分享两个比较好用的U盘启动盘工具安装电脑系统必备
  20. 重要通知(温馨提示:大家访问博客的时候先清理一下浏览器缓存)

热门文章

  1. QT openGL 编程 笔记
  2. DBSCAN基于密度聚类算法
  3. 和技术一号位来一场深度对谈
  4. 分布式系统的流量防卫兵Sentinel-入门指南
  5. 九乐客会员营销系统v1.1.7
  6. 二叉树高度最简单的求法
  7. 注册头条号时怎么选择领域
  8. 苹果电脑 mp4 视频文件太大怎么变小
  9. cookie获取的两种方法
  10. mysql单引号_mysql单引号和双引号