当我们自己跑一个小程序时,可以用类似java app.jar的命令直接跑。而在实际的生产/开发环境,除了classpath外,还会加上一大堆JVM运行参数。

下面,就对一个实例进行分析:

-Xms140G // 最小堆

-Xmx140G // 最大堆

-Xss10M // 栈空间

-XX:MetaspaceSize=2G // Metaspace扩容时触发FullGC的初始化阈值

-XX:MinHeapFreeRatio=10 // serial collector 使用的参数,控制Heap扩大或者收缩,不常用了

-XX:MaxHeapFreeRatio=20

-XX:+UseStringDeduplication // JVM在做GC的同时会做重复字符串消除

-XX:+PrintStringDeduplicationStatistics

-XX:+UseG1GC // 使用G1 GC

-XX:+UnlockExperimentalVMOptions // 允许使用experimental的参数

-XX:G1HeapWastePercent=5 // Sets the percentage of heap that you are willing to waste.

-XX:G1MixedGCLiveThresholdPercent=85 // Sets the occupancy threshold for an old region to be included in a mixed garbage collection cycle. (experimental)

-XX:G1HeapRegionSize=32M // Sets the size of a G1 region.

-XX:MaxGCPauseMillis=10000 // Sets a target value for desired maximum pause time.

-verbose:gc // alias for -XX:+PrintGC

-XX:+PrintGCDetails

-XX:+PrintGCTimeStamps

-XX:+PrintGCDateStamps

-Xloggc:path_to_my_gc.log // GC log 文件存放位置

-Dcom.sun.management.jmxremote.port=1234 // 远程调试端口

-Dcom.sun.management.jmxremote.authenticate=false

-Dcom.sun.management.jmxremote.ssl=false

-Dlog4j.configuration=file://$LOG4J_FILE // log4j文件存放位置

Xms Xmx Xss

很重要,很重要,很重要。

随着我们应用的业务量不断增大,Xms和Xmx也一路增长。从80G->140G。

-Xms140G // 最小堆

-Xmx140G // 最大堆

-Xss10M // 栈空间

# -Xmn50G // 年轻代

Xss:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。

Xmn:一般年轻代设置为整个堆大小的3/8。

注:一般最小堆和最大堆设置一样,防止内存抖动(这个“抖动”的操作也是耗时的)。

UseStringDeduplication

这里有一个疑问,String Pool和 UseStringDeduplication 这两个东西功能重复吗?

-> 当然是不重复的。

String Pool存的是literal或者调用String.intern()的字符串。如下:

String a = "Hello";

String b = new String("Hello").intern();

//System.out.println(System.identityHashCode(a) + ", " + Integer.toHexString(a.hashCode()));

//System.out.println(System.identityHashCode(b) + ", " + Integer.toHexString(b.hashCode()));

除此之外,更多的情况,String是 Runtime 生成的。比如,从DB中query出来,或者调用某个REST API接口query出来。

String c = new String("Hello");

String d = getFromDB();

String e = getFromAPI();

使用这个参数可以对以上所有情况去重。当然,前提是使用G1 GC。

UseG1GC

特别要说明的一项是MaxGCPauseMillis,默认是200miliseconds,我们这里调到了10000。

这个参数的背后代表的意思是:每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值。

因为我们的应用是吞吐量大,相应要求低,所以这里可以设大一点的值,否则年轻代过小,可能导致频繁FGC。

其它的参数基本上都是使用的默认值。

其它以上没列出来的常用参数

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

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

-XX:SurvivorRatio=n:设置(两个)Survivor区和Eden区的比值为2:n。如3,表示Survivor:Eden=2:3

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

链接

Java应用案例分析_Java应用启动参数实例解析相关推荐

  1. java继承案例分析_Java面向对象_继承——基本概念以及管理化妆品实例分析

    一.继承的基本概念: 1.继承是面向对象三大特征之一 2.被继承的类成为父类(超类),继承父类的类成为子类(派生类) 3.继承是指一个对象直接使用另一个对象的属性和方法 4.通过继承可以实现代码重用 ...

  2. java表格源码_Java表格JTable代码实例解析

    代码如下: import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import javax.swing.JSc ...

  3. Linux操作系统内核启动参数详细解析[转]

    Linux操作系统内核启动参数详细解析http://os.51cto.com/art/200902/110080.htmhttp://os.51cto.com 2009-02-17 16:07 佚名 ...

  4. linux开放7050端口,Linux操作系统内核启动参数详细解析

    Linux操作系统内核启动参数详细解析 2007-05-09 17:27 作者:little 来源:赛迪网 [摘要] Linux内核在启动的时候,能接收某些命令行选项或启动时参数.当内核不能识别某些硬 ...

  5. 【最新】2017年注册测绘师考试测绘案例分析历年真题及答案解析

    系列文章目录 [最新]2017年注册测绘师考试测绘案例分析历年真题及答案解析 [最新]2022年注册测绘师考试测绘案例分析真题及参考答案 [最新]2021年注册测绘师考试测绘案例分析真题及参考答案 [ ...

  6. java eclipse给参数_java eclipse 启动参数

    其实,Eclipse是一个可以进行非常灵活配置的系统,除了以缺省的方式启动以外,还可以指定各种参数来定制启动方式. 在参考了一些资料之后,我总结了一些比较常用的启动时Command Arguments ...

  7. java进阶案例下载_java进阶案例

    java进阶案例: 数据类型,字符,数值,范围,布尔 :byte -128~127. 面向对象:protect :重载与构造 (一). this封装:static:继承:多态: 1.方法覆盖:supe ...

  8. java finally 抛出异常_java抛出异常与finally实例解析

    这篇文章主要介绍了java抛出异常与finally实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下: package test1; ...

  9. 小程序真机测试「启动参数」解析出错问题

    写小程序2年了 前两天才碰到的这个问题 以前没出错过 话不多说 直接上图 1.小程序 - 启动参数图例  2 2.微信开发者工具-模拟器输出参数-正常图例  这是没问题! 3.真机测试-输出参数-错误 ...

最新文章

  1. linux用户变量设置位置,linux---位置参数
  2. UCloud UFile——对象存储UFile SDK基本使用
  3. iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍)
  4. Oracle笔记(十四) 用户管理
  5. 看DLI服务4核心如何提升云服务自动化运维
  6. InnoDB IO子系统介绍
  7. HikariDataSource 监控_Prometheus监控告警浅析
  8. Java基础学习总结(55)——java8新特性:stream
  9. 现在五年期定期利率在五以上的银行有哪些?
  10. Hao Yin Jian 寒假第一周
  11. amp;#9733;一名“标题党”自我修炼的10…
  12. 在Eclipse里自动导入相应包的类名的快捷键
  13. ISO 28000供应链安全管理简述及标准
  14. 电脑蓝屏0x0000006B不重装系统的解决办法
  15. Honeywell全系列打印机驱动interdriver 2019.M-3
  16. 发送短信(SMS)承载方式有哪些?
  17. 如何使用富文本编辑器tinymce
  18. 吃掉IT大象:从绿海开发到棕海开发
  19. 利用CSS在图片中添加文字
  20. 2020深圳计算机职称考试,2019年深圳市职称考评专业知识考试报名时间

热门文章

  1. 一个demo学会css
  2. python装饰器快速入门
  3. 卷积神经网络及其特征图可视化
  4. 轻松三步教你配置oracle,Oracle Net Configuration Assistant 配置步骤简明教程
  5. 洛谷P2147[SDOI2008]洞穴勘测
  6. 《转》15种CSS混合模式让图片产生令人惊艳的效果
  7. Spring MVC自动为对象注入枚举数据
  8. 软件工程个人作业12
  9. POJ 1325 Machine Schedule(zoj 1364) 最小覆盖数
  10. 搭建开发环境之串口线的选择