2019.9.25 Tomcat JVM参数优化

匿名 (未验证) 提交于 2019-12-03 00:11:01

 

JVM参数的优化                 JVM 是java虚拟机,是jdk最底层的东西

适当调整tomcat的运行jvm参数可以提升整体性能,和内存使用率。

JVM内存模型

Javaջ

Java栈与每一个线程关联的,jvm在创建每个线程的时候,会分配一定的栈空间给线程使用,它主要用来存储线程执行过程中的局部变量,和方法的返回值,以及方法调用上下文,栈空间随着线程的终止而释放。

Java

Java中堆是由所有的线程共享的一块内存区域,堆用来保存各种java对象,比如数组,线程对象等。

Java堆的分区

 

 

 

Young新生代

  Eden区,两个Survivor区(一般情况)。大部分对象是在Eden区中生成,某一个时刻只有其中一个是被使用的,当Eden区满了,GC就会将存活的对象移到空闲的survivor区间中,根据jvm的策略。在经过几次垃圾收集后,任然存活于survivor的对象将被移动到oid generation区间。

(新生成的对象都在新生代,java的GC会进行垃圾回收你这个对象,但是它发现你这个内存对象还在应用,根据几次的垃圾回收,任然还有些对象没有被回收的话就给他放到老年代里,放到老年代里不一定不会被GC回收)。

Oid Generation老年代

Oidgeneration区主要保存生命周期长的对象,一般是一些老的对象,当一些对象在Young复制转移到一定次数以后,内存对象就会被转移到oidgeneration区,一般如果系统中用了application级别的缓存,缓存中的对象往往会被转移到这一区间,放到老年代里不一定不会被GC回收。

Perm永久代

Perm主要保存class,method,filed对象,并不会被GC回收。

 

Virtual区:

最大内存和初始内存的差值,就是virtual区,年轻代,老年代,永久代上都有虚拟区(virtual)

设置区的大小

Jvm提供了相应的参数来对内存大小进行配置,jvm中堆被分为了3个大的区间,同时jvm也提供了一些选项对young,oidgeneration的大小进行控制

 

Total heap

l -Xms:指定了jvm初始启动以后初始化内存

l -Xmx:指定jvm堆的最大内存,在jvm启动以后,会分配-Xmx参数指定大小的内存给JVM,但是不一定全都使用,jvm会根据-Xms参数来调节真正用于jvm的内存

l Xmx-Xms=virtual大小(之差就是三个virtual空间大小)

 

年轻代:

l -XX:NewRatio=8意味着oidgeneration和young的比值8:1,这样eden+2*survivr=1/9堆内存

l -XX:SurvivorRatio=32意味着eden和一个survivor的比值是32:1,这样一个Survivorj就占young区的1/34

l -Xmn参数设置了年轻代的大小

 

永久代:

 

Thread Stack

l -XX:Xss=128k

常用参数

参数说明:

file.encoding 默认文件编码

XX:MaxNewSize 设置最大的年轻代大小

 

tomcat中设置JVM参数

Tomcat

  • jvm

jvm--

 

 

 

  • 0tomcat

 

[root@node1 ~]# cd /usr/local/tomcat7/webapps/

 

 [root@node1 webapps]# rz

 

 

catalina.shcatalina.sh

# tomcat1G

[root@localhost ~]# vim /usr/local/tomcat8/bin/catalina.sh                                         //-Xms1024  这里一般修改是4个G一个实例的大小。

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m"          

[root@localhost ~]# /usr/local/tomcat8/bin/shutdown.sh

[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh

 

 

 

 修改之后

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!