JVM中的flag设置详解

作者:Mirhunana 时间:2022-08-11 01:37:20 

本文研究的主要是JVM中的flag设置详解的相关内容,具体介绍如下。

一、堆大小设置

-Xmx3550m:设置JVM最大可用内存为3550M。

-Xms3550m:设置JVM初始可用内存为3550M。

-Xmn2g:设置年轻代大小为2G。

-Xss128k:设置每个线程的堆栈大小为128K

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

-XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与老年代(除去持久代)的比值为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5

-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值.设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6

-XX:MaxPermSize=16m:设置持久代大小为16m.

-XX:PretenureSizeThreshold=n,大于n的对象直接放入老年代

-XX:MaxTenuringThreshold=0:设置垃圾最大年龄.如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代.

-XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集.

整个堆大小 = 年轻代大小 + 老年代大小 + 持久代大小。

JVM中的flag设置详解

二、收集器设置

-XX:+UseSerialGC:设置串行收集器
-XX:+UseParallelGC:设置并行收集器
-XX:+UseParalledlOldGC:设置并行年老代收集器
-XX:+UseConcMarkSweepGC:设置并发收集器

JVM中的flag设置详解

三、垃圾回收统计信息

-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename

JVM中的flag设置详解

四、并行收集器设置

-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数.并行收集线程数.
-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间
-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比.公式为1/(1+n)

五、并发收集器设置

-XX:+CMSIncrementalMode:设置为增量模式.适用于单CPU情况.
-XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数.并行收集线程数.

下面举个例子:

假设有个名为TestMem.java 的文件


javac TestMem.java
java -verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 TestMem

-Xms20M:JVM中Java堆的初始大小为20M。(包括新生代和老年代)
-Xmx20M:JVM中Java堆的最大大小为20M,也就是说不可扩展。(包括新生代和老年代)
-Xmn10M:新生代的大小为10M
-XX:+PrintGCDetails:打印详细GC信息
-XX:SurvivorRatio=8:新生代中一个Enden与一个Survivor区的空间比例是8:1,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10

知道上面的的flag信息之后,我们可以得到以下信息:

java堆的总大小为20M = 20 * 1024K = 20480K
新生代的大小:10M = 10 * 1024K = 10240K
eden space:10240K * 8/10 = 8192K
from space:10240K * 1/10 = 1024K
to space:10240K * 1/10 = 1024K
老年代的大小:20M - 10M = 10M = 10240K

来源:http://blog.csdn.net/hp910315/article/details/50964778

标签:java,jvm,设置flag
0
投稿

猜你喜欢

  • c#获取当前年的周数及当前月的天数示例代码

    2021-10-04 09:42:19
  • Java多线程之线程通信生产者消费者模式及等待唤醒机制代码详解

    2022-10-31 11:17:22
  • c#基于WinForm的Socket实现简单的聊天室 IM

    2021-11-27 04:47:57
  • 详解C#扩展方法原理及其使用

    2022-12-20 03:55:22
  • SpringBoot结合JWT登录权限控制的实现

    2023-10-06 04:54:22
  • Android利用RecyclerView实现全选、置顶和拖拽功能示例

    2023-06-05 18:21:22
  • 对Mapper 中几种update的区别说明

    2023-05-19 04:39:44
  • C# 10个常用特性汇总

    2023-03-22 01:04:13
  • kettle中使用js调用java类的方法

    2022-05-09 00:06:31
  • springboot 无法自动装配的问题

    2021-05-29 06:14:30
  • Unity实现ScrollView滑动吸附功能

    2022-07-07 00:38:14
  • Android实现手机多点触摸画圆

    2022-03-23 06:23:16
  • JAVA基础-GUI

    2023-10-24 22:26:07
  • SpringBoot实现PPT格式文件上传并在线预览功能

    2023-07-22 14:44:56
  • Spring boot的上传图片功能实例详解

    2022-10-09 09:52:00
  • Java枚举类使用Lombok方式

    2022-06-28 22:07:02
  • C#字符串内存分配与驻留池学习分享

    2022-07-02 12:11:29
  • Android异步回调中的UI同步性问题分析

    2022-07-31 14:10:51
  • Mybatis环境搭建及文件配置过程解析

    2021-07-04 22:37:03
  • Spring依赖注入(DI)两种方式的示例详解

    2021-09-14 12:00:20
  • asp之家 软件编程 m.aspxhome.com