JVM参数优化

JVM毕竟不是智能的,所以我们要根据实际的运行机器,实际业务等情况选择合适的参数去优化JVM下面我讲一些简单的参数列下来,这些参数的使用需要先理解JVM内存模型,垃圾回收机制.

  1. 当堆需要扩展的时内存不够会报  OutOfMemeryError: Heap(堆内存溢出) ,这时可能设置堆大小参数:

-Xms=10M  设置堆的最小大小

-Xmx=20M   设置堆的最大大小

-Xmn=3M   设置年轻代的大小,如果设置太大会导致老年代太小,所以官方推荐为整个堆的3/8大小

-XX:HeapDumpPath=E:\Java\dump   设置堆转储文件的地址

-XX:+HeapDumpOnOutOfMemoryError   当发生堆内存溢出的时候生成堆转储文件,可以通过分析堆转储文件来找到溢出的原因

2.在经常动态生成大量Class的应用中,如使用Cglib增强,动态语言,大量Jsp文件 时,可能报OutOfMemeryError:PerGen space(方法区溢出).

-XX:PermSize:10M    设置方法区最小大小

-XX:MaxPermsize        设置方法去最大大小

3.垃圾回收器设置:

-XX:UseSerialGC    新生代使用Serial收集器,老年代使用Serial Old 收集器 .当JVM运行在Client模式下,默认打开.

-XX:UseParNewGC    新生代使用ParNew收集器,老年代使用Serial Old 收集器

-XX:UseConcMarkSweepGC  新生代使用ParNew收集器,老年代使用CMS,Serial Old,当老年代使用CMS出现Concurrent Mode Failure的时候才使用Serial Old收集器

-XX:ParallelGCThreads  由于ParNew收集器是多线程的,默认线程数就是内核数目,可以通过这个指定垃圾收集时线程数目

-XX:UseParallelGC     新生代使用Parallel Scavenge收集器,老年代使用Serial Old收集器,JVM运行在Server模式下,默认开启.

-XX:UseParallelGC   新生代使用Parallel Scavenge收集器,老年代使用Parallel Old收集器

-XX:Maxtenuing Threshold      当新手代对象经过指定的次数就能进入老年代,默认为15.

关于JVM的Client和Server模式.JVM有Client和Server模式,在Client模式下,启动比较快,垃圾收集器默认使用Serial + Serial Old.在Server模式下,启动比较慢,默认使用Parallel Scanvenge + Serial Old.Client适用于桌面应用程序,用户线程执行时间长,用户体验好.Server适用于服务器端,吞吐量高.

JVM会根据机器的内存以及CPU数量来判断使用什么模式.通过java -version可以看到JVM使用什么模式.

当然也可以通过-client以及-server来指定JVM运行的模式.

时间: 2024-10-09 21:22:15

JVM参数优化的相关文章

Tomcat 调优及 JVM 参数优化

Tomcat 本身与 JVM 优化 Tomcat:调整Server.xml JVM:bat启动服务方式的话修改catalina.bat 服务式启动的话参考:http://www.cnblogs.com/qlqwjy/p/8007490.html Tomcat 的缺省配置是不能稳定长期运行的,也就是不适合生产环境,它会死机,让你不断重新启动,甚至在午夜时分唤醒你.对于操作系统优化来说,是尽可能的增大可使 用的内存容量.提高CPU 的频率,保证文件系统的读写速率等.经过压力测试验证,在并发连接很多的

性能测试十九:jmeter参数优化+排错

一:参数优化 1,控制台取样间隔的设置,在jmeter/bin/jmeter.properties文件中修改 summariser.interval=10,默认为30s,最低可修改为6s 2,Jvm参数优化 bin目录下,vi jmeter,修改HEAP的size大小,默认512M,可以设置成1024M或2048M,一般配置到系统内存的1/4--1/2之间 3,默认编码修改,在jmeter/bin/jmeter.properties文件中修改 sampleresult.default.encod

Java虚拟机(JVM)体系结构概述及各种性能参数优化总结

转自:http://blog.csdn.net/zhongwen7710/article/details/39213377 第一部分:相关的概念 数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型.基本类型的变量保存原始值,即:他代表的值就是数值本身:而引用类型的变量保存引用值.“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置. 基本类型包括:byte,short,int,long,char,float,double,Boolean,r

JVM参数与实际环境中的优化配置实践

如何配置我们的JVM呢,首先我们需要知道JVM的参数有哪些,然后根据这些参数的意义去分析自己的程序的JVM需要的配置.可以事先做一些尝试,再逐步调优,这个调优也是一个过程,没有足够的经验而做到一步到位是一件很困难的事情.事情是一点点做的,不能因为着急就胡乱地配置,踏踏实实戒骄戒躁. JVM在Java体系中的地位 JVM是Java底层核心要素,可以说Java生态的东西都是运行在JVM里面的.From:https://docs.oracle.com/javase/8/docs/ JVM参数的含义 

优化JVM参数提升Eclipse运行速度

http://www.iteye.com/topic/1117534 首先建立评估体系,将workspace里所有的项目close掉,关闭eclipse.优化的用例就是启动eclipse,open一个项目,eclipse会自动build这个项目,保证没有感觉到明显的卡,也就是没有full GC. 开始: eclipse.ini里加入打印gc情况的参数: -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -verbose:gc -Xloggc:gc.log 这样

根据应用程序设置JVM参数(三)-优化老年代大小

接着前面的,现在来计算老年代的 日志图: 1.假如没有FullGc,如何计算老年代需要多少时间装满? (不看第一条和最后一条数据,分析)通过MinorGc计算每次老年代的增量 老年代的增量 = 堆的总量 - 新生代的剩余量(souvivor区) 这样可以得到几乎每次minorGc老年代增加85m空间,而minorGc每4秒一次. 老年代的总量: 1654272 - 601088 = 1053184k =1028m 那么填满老年区需要 1028 / 85 * 4 = 48s 虽然与上面的503-4

[转帖]Java虚拟机(JVM)体系结构概述及各种性能参数优化总结

Java虚拟机(JVM)体系结构概述及各种性能参数优化总结 2014年09月11日 23:05:27 zhongwen7710 阅读数 1437 标签: JVM调优jvm 更多 个人分类: Java知识点总结技术架构原理 https://blog.csdn.net/zhongwen7710/article/details/39213377 写的很好.. 堆栈分不清楚的我 愧对计算机系毕业.. 第一部分:相关的概念 数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型.基本类型的变

SOLR管理配置和性能优化JVM参数调优

我个配置:JAVA_OPTIONS="-Xmx1024m -Xms1024m -Xmn512m -XX:MaxPermSize=128m -XX:SurvivorRatio=65536 -XX:MaxTenuringThreshold=0 -Xnoclassgc -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBefor

JVM性能优化--JVM参数配置,使用JMeter简单测试配合说明参数调优

一.JVM参数配置 1.常见参数配置 -XX:+PrintGC 每次触发GC的时候打印相关日志 -XX:+UseSerialGC 串行回收 -XX:+PrintGCDetails 更详细的GC日志 -Xms 堆初始值 -Xmx 堆最大可用值 -Xmn 新生代堆最大可用值 -XX:SurvivorRatio 用来设置新生代中eden空间和from/to空间的比例. -XX:NewRatio 配置新生代与老年代占比 1:2 含以-XX:SurvivorRatio=eden/from=den/to 总