jvm参数及分析工具
| -Xmx4G | 设置堆的最大内存大小为4GB,也可通过-XX:MaxHeapSize=4GB进行设置 |
| -Xms256m | 设置堆的初始内存大小为256兆,如果未设置此选项,则初始大小将设置为新生代和年老代分配的内存大小总和,也可通过-XX:InitialHeapSize=256m进行设置 |
| -Xmn256m | 设置新生代的初始内存大小和最大内存大小为256兆,也可通过-XX:NewSize=256m设置新生代初始内存大小、-XX:MaxNewSize=256m设置新生代最大内存大小 |
| -Xss256k | 设置每个线程的堆栈大小为256KB,也可通过-XX:ThreadStackSize=256k进行设置。默认值与运行环境有关,64位linux系统中默认值为1024KB |
| -XX:MetaspaceSize=256m |
Metaspace由于使用不断扩容到-XX:MetaspaceSize参数指定的量,就会发生FGC;且之后每次Metaspace扩容都会发生FGC。 Metaspace的初始容量一定是21807104(约20.8m)和MetaspaceSize及MaxMetaspaceSize设置的值无关,所以扩容区间是[20.8m, MaxMetaspaceSize) |
| -XX:MaxMetaspaceSize=256m | 设置元空间的最大本机内存为256兆 |
| -XX:NewRatio=1 | 设置年老代和新生代占用的内存空间的比值,即old/new=1,默认值是2 |
| -XX:NewSize=256m | 设置新生代的初始内存大小为256兆 |
| -XX:SurvivorRatio=4 | 设置Eden区和Survivor大小比值,即Eden/Survivor=4,该设置表明每个Survivor区在新生代中占1/6的空间,该设置默认值为8 |
|
-XX:PretenureSizeThreshold= 10240000 |
设置直接进入老年代的对象大小阈值。此处表示大于10M的对象直接进入老年代 |
| -XX:MaxTenuringThreshold=20 | 设置进入老年代的门槛,即对象在Survivor区之间拷贝了20次则将该对象复制到老年代 |
| -XX:MaxNewSize=256m | 设置新生代的最大内存大小为256兆 |
| -XX:InitialHeapSize=256m | 设置堆的初始内存大小为256兆 |
| -XX:MaxHeapSize=4GB | 设置堆的最大内存大小为4GB |
| -XX:PermSize=256m | 设置分配给永久代的空间(以字节为单位),如果超出则会触发垃圾回收。此选项在JDK 8中已弃用,并被该-XX:MetaspaceSize选项取代(原因是jdk1.8已经将永久代移到了本地内存中,称为MetaSpace) |
| -XX:MaxPermSize=256m | 设置最大永久生成空间大小(以字节为单位)。此选项在JDK 8中已弃用,并由该-XX:MaxMetaspaceSize选项取代。 |
| -XX:MaxGCPauseMillis=500 | 设置一次GC过程大的暂停时间,单位是毫秒 |
| -XX:GCTimeRatio=9 | 设置吞吐量为90%,计算公式N/(N+1),默认值为99 |
| -XX:+UseSerialGC | 使用串行垃圾收集器,默认情况下,禁用此选项,并根据计算机的配置和JVM的类型自动选择收集器 |
| -XX:+UseParallelGC | 开启并行垃圾收集器(也称为吞吐量收集器),对新生代开启此选项将自动开启-XX:+UseParallelOldGC,除非显示禁用它 |
| -XX:+UseParNewGC | 对新生代使用并行线程进行垃圾回收,设置-XX:+UseConcMarkSweepGC选项时会自动启用该选项,jdk1.8之后单独使用该配置已过时,必须配合-XX:+UseConcMarkSweepGC使用 |
| -XX:+UseParallelOldGC | 对老年代使用并行垃圾收集器,开启此选项时-XX:+UseParallelGC会自动被开启 |
| -XX:+UseConcMarkSweepGC | 开启并发标记清除垃圾收集器(仅对老年代有效),并自动开启-XX:+UseParNewGC且无法禁用 |
| -XX:ParallelGCThreads=2 | 设置新生代和老年代中并行垃圾收集器开启的线程数,默认值是系统可用CPU的数量 |
| -XX:+PrintGC | 允许打印GC信息 |
| -XX:+PrintGCDetails | 允许打印GX详细信息 |
| -XX:+PrintGCDateStamps | 允许打印GC日期戳 |
| -XX:+PrintGCTimeStamps | 允许打印GC时间戳 |
| -Xloggc:filename | gc日志输出到指定文件 |
以上参数意义可参照官方文档,https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
oracle官方文档表示,在以下配置的计算机上,默认情况下选择吞吐量垃圾收集器;初始堆大小为1/64的物理内存,最大为1GB;最大堆大小为1/4物理内存,最大为1GB:
①.2个以上处理器
②.2GB以上的物理内存
分析工具
jmap -heap pid
查看指定java进程的jvm参数和当前堆内各个区的内存使用情况(pid表示进程id)
jstack pid
查看指定java进程的栈内日志,主要用于分析线程的运行状况
jstat -gc pid 1000
每隔一秒统计一次gc的回收情况
jvm参数及分析工具的更多相关文章
- JVM参数配置&&命令工具
JVM参数配置 大致方向:JVM调优的目的是保证在一定吞吐量的情况下尽可能的减少GC次数,从而减少系统停顿时间,提高服务质量和效率. 其中减少GC次数的原则: 将新生代转换成老年代的数量降至最少(及时 ...
- jvm jstack log分析工具,在线分析
http://spotify.github.io/threaddump-analyzer Spotify提供的Web版在线分析工具,可以将锁或条件相关联的线程聚合到一起.
- JVM内存状况查看方法和分析工具
Java本身提供了多种丰富的方法和工具来帮助开发人员查看和分析GC及JVM内存的状况,同时开源界和商业界也有一些工具可用于查看.分析GC及JVM内存的状况.通过这些分析,可以排查程序中内存泄露的问题及 ...
- Tomcat优化和JVM分析工具
Tomcat的常见优化和JVM常见分析工具 Tomcat的常用优化配置 (1) 内存空间: /etc/sysconfig/tomcat JAVA_OPTS="-server -Xms32g ...
- Scala命令设置JVM参数的规则
Scala下设置JVM参数简单分析 Scala 启动shell脚本,简化后的scala REPL 启动命令大致如下所示: java -Xmx256M -Xms32M \-Xbootclasspath/ ...
- JDK工具(查看JVM参数、内存使用情况及分析等)
在JDK的bin目录下有很多命令行工具: 我们可以看到各个工具的体积基本上都稳定在27kb左右,这个不是JDK开发团队刻意为之的,而是因为这些工具大多数是jdk\lib\tools.jar类库的一 ...
- 【J2EE性能分析篇】JVM参数对J2EE性能优化的影响
一切J2EE应用都是基于JVM的,那么对于JVM的设置和监控,成为J2EE应用程序性能分析和性能优化的必然手段.今天Sincky和大家交流该话题.这里以Tomcat环境为例,其它WEB服务器如Jbos ...
- Java虚拟机------JVM分析工具
主要介绍JVM的分析工具: jps jps:Java Virtual Machine Process Status Tool http://docs.oracle.com/javase/1.5.0/d ...
- java自带的jvm分析工具
http://domark.iteye.com/blog/1924302 这段时间觉得很有必要对java的内存分析工具进行熟悉,这样以后出现机器负载较高,或者反应很慢的时候,我就可以查找原因了.上 ...
随机推荐
- 51nod1363 最小公倍数之和
题目描述 给出一个n,求1-n这n个数,同n的最小公倍数的和. 例如:n = 6,1,2,3,4,5,6 同6的最小公倍数分别为6,6,6,12,30,6,加在一起 = 66. 由于结果很大,输出Mo ...
- 三、原子变量与CAS算法
原子变量:jdk1.5 后 java.util.concurrent.atomic 包下提供了常用的原子变量: - AtomicBoolean - AtomicInteger - AtomicLong ...
- Vue-admin工作整理(十九):从数字渐变组件谈第三方JS库Count-to的使用
1.组件封装基础 npm install countup@latest 2.组件中使用id值 3.组件中获得dom 如何封装一个组件,在组件中用到需要传入HTML元素ID值的JS库时如何处理,如何获取 ...
- webpack创建页面的过程
1.项目文件夹中创建各类型文件放置的文件夹,如:iTestingWeb文件夹下创建src dist文件夹,用途:src为源码 dist为生成后的文件放置位置,然后在源码文件夹中进一步按文件类型增加文件 ...
- script 修改 plist遇到的问题
一个sh脚本每次build的时候动态修改info.plist文件 达到动态更改版本号的目的 但是估计是因为缓存的缘故 每次只有clean之后再运行才会修改成功 看script执行的log 好像是先修改 ...
- aop(execution()表达式)
execution(* com.tp.soft.service..*.*(..)) 整个表达式可以分为五个部分: 1.execution(): 表达式主体. 2.第一个*号:表示返回类型,*号表示所有 ...
- Data Block Compression
The database can use table compression to eliminate duplicate values in a data block. This section d ...
- f-stack nginx多进程报错 primary worker process failed to initialize
EAL: Detected 4 lcore(s)EAL: Detected 1 NUMA nodesEAL: Multi-process socket /var/run/dpdk/rte/mp_soc ...
- android --- api json数据
「一个」.「Time 时光」.「开眼」.「一席」.「梨视频」.「微软必应词典」.「金山词典」.「豆瓣电影」.「中央天气」.「魅族天气」.「每日一文」.「12306」.「途牛」.「快递100」.「快递」 ...
- jdbc、jpa、spring data jpa、hibernate、mybatis之间的关系及区别
基础概念 jdbc(Java DataBase Connectivity)是java连接数据库操作的原生接口.JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型.作为A ...