• Tomcat的JVM优化


    一、JVM管理内存段分类

    1、线程共享内存

    方法区:存储jvm加载的class、常量、静态变量、及时编译器编译后的代码等

    java堆:存储java所有对象实例、数组等

    2、线程私有内存

    程序计数寄存器:每个线程有自己的计数寄存器,存储当前线程执行字节码的地址

    jvm栈:jvm会为每个运行线程分配一个栈区,线程调用方法时和方法返回时会进行入栈和出栈操作

    本地方法栈区:与jvm stack类似,只不过此区域是为调用本地方法服务

    二、各参数代表的意义

    -Xms:堆内存空间的初始大小

    -Xmx:堆内存的最大值

    -Xmn:年轻代大小(1.4 or later),默认值大小为整个堆的3/8

    -XX:NewSize:新生代的初始空间大小(for 1.3/1.4)

    -XX:MaxNewSize:新生代空间的最大值(for 1.3/1.4)

    -XX:PermSize:持久带的初始值

    -XX:MaxPermSize:持久带的最大值

    -XX:NewRatio:年轻代(包括Eden和两个Survivor区)与老年代的比值(除去持久代)

           设置为4则表示: 新生代/老年代=1:4,即年轻代占堆的1/5

           Xms=Xmx并且设置了Xmn的情况下,该参数不需要进行设置。

    -XX:SurvivorRatio:在新生代内部Eden/survivor的值

             设置为8,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10

    三、举例说明

    linux环境:catalina.sh

    export CATALINA_OPTS="-Xms3550m -Xmx4096m -Xss256K -XX:PermSize=128m -XX:MaxPermSize=256m"

    windows环境:catalina.bat

    set CATALINA_OPTS=-server -Xms256m -Xmx1300m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:-UseGCOverheadLimit -XX:+UseConcMarkSweepGC -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000

    四、常用配置

    1、堆设置

    -Xms:初始堆大小

    -Xmx:最大堆大小

    -Xss:每个线程的堆栈大小

    -Xmn:设置年轻代大小

    -XX:NewSize=n:设置年轻代大小

    -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4

    -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5

    -XX:MaxPermSize=n:设置持久代大小

    2、收集器设置

    -XX:+UseSerialGC:设置串行收集器

    -XX:+UseParallelGC:设置并行收集器

    -XX:+UseParalledlOldGC:设置并行年老代收集器

    -XX:+UseConcMarkSweepGC:设置并发收集器

    3、垃圾回收统计信息

    -XX:+PrintGC

    -XX:+PrintGCDetails

    -XX:+PrintGCTimeStamps

    -Xloggc:filename

    4、并行收集器设置

    -XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。

    -XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间

    -XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)

    5、并发收集器设置

    -XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。

    -XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。

    五、java性能查看工具

    jstat:打印垃圾收集器的信息

    jps:查看进程

    jstat -gc 进程号:查看垃圾收集器的信息

    jconsile、VisualVM、jprofiler、janalyzer

  • 相关阅读:
    字符序列(characts)
    装载问题(load)
    哈密顿路
    犯罪团伙
    回溯算法
    维修机器人
    旅行计划
    皇后游戏
    运输
    亲身实测可用的java实现wordxlsxpdf文件下载功能
  • 原文地址:https://www.cnblogs.com/fansik/p/5413575.html
Copyright © 2020-2023  润新知