分享一波:程序员赚外快-必看的巅峰干货

-Xms

JVM启动时申请的初始Heap值,默认为操作系统物理内存的1/64但小于1G。默认当空余堆内存大于70%时,JVM会减小heap的大小到-Xms指定的大小,可通过-XX:MaxHeapFreeRation=来指定这个比列。Server端JVM最好将-Xms和-Xmx设为相同值,避免每次垃圾回收完成后JVM重新分配内存;开发测试机JVM可以保留默认值。
-Xmx

JVM可申请的最大Heap值,默认值为物理内存的1/4但小于1G,默认当空余堆内存小于40%时,JVM会增大Heap到-Xmx指定的大小,可通过-XX:MinHeapFreeRation=来指定这个比列。最佳设值应该视物理内存大小及计算机内其他内存开销而定。
-Xmn

Java Heap Young区大小。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小(相对于HotSpot 类型的虚拟机来说)。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

程序新创建的对象都是从年轻代分配内存,年轻代由Eden Space和两块相同大小的SurvivorSpace(通常又称S0和S1或From和To)构成,可通过-Xmn参数来指定年轻代的大小,也可以通过-XX:SurvivorRation来调整Eden Space及SurvivorSpace的大小。

老年代用于存放经过多次新生代GC仍然存活的对象,例如缓存对象,新建的对象也有可能直接进入老年代,主要有两种情况:1、大对象,可通过启动参数设置-XX:PretenureSizeThreshold=1024(单位为字节,默认为0)来代表超过多大时就不在新生代分配,而是直接在老年代分配。2、大的数组对象,且数组中无引用外部对象。老年代所占的内存大小为-Xmx对应的值减去-Xmn对应的值。如果在堆中没有内存完成实例分配,并且堆也无法再扩展时,将会抛出OutOfMemoryError异常。
-Xss

Java每个线程的Stack大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。(例如:-Xss1024K)
-XX:PermSize

持久代(方法区)的初始内存大小。(例如:-XX:PermSize=64m)
-XX:MaxPermSize

持久代(方法区)的最大内存大小。(例如:-XX:MaxPermSize=512m)
-XX:+UseSerialGC

串行(SerialGC)是jvm的默认GC方式,一般适用于小型应用和单处理器,算法比较简单,GC效率也较高,但可能会给应用带来停顿。
-XX:+UseParallelGC

并行(ParallelGC)是指多个线程并行执行GC,一般适用于多处理器系统中,可以提高GC的效率,但算法复杂,系统消耗较大。(配合使用:-XX:ParallelGCThreads=8,并行收集器的线程数,此值最好配置与处理器数目相等)
-XX:+UseParNewGC

设置年轻代为并行收集,JKD5.0以上,JVM会根据系统配置自行设置,所以无需设置此值。
-XX:+UseParallelOldGC

设置年老代为并行收集,JKD6.0出现的参数选项。
-XX:+UseConcMarkSweepGC

并发(ConcMarkSweepGC)是指GC运行时,对应用程序运行几乎没有影响(也会造成停顿,不过很小而已),GC和app两者的线程在并发执行,这样可以最大限度不影响app的运行。
-XX:+UseCMSCompactAtFullCollection

在Full GC的时候,对老年代进行压缩整理。因为CMS是不会移动内存的,因此非常容易产生内存碎片。因此增加这个参数就可以在FullGC后对内存进行压缩整理,消除内存碎片。当然这个操作也有一定缺点,就是会增加CPU开销与GC时间,所以可以通过-XX:CMSFullGCsBeforeCompaction=3 这个参数来控制多少次Full GC以后进行一次碎片整理。
-XX:+CMSInitiatingOccupancyFraction=80

代表老年代使用空间达到80%后,就进行Full GC。CMS收集器在进行垃圾收集时,和应用程序一起工作,所以,不能等到老年代几乎完全被填满了再进行收集,这样会影响并发的应用线程的空间使用,从而再次触发不必要的Full GC。
-XX:+MaxTenuringThreshold=10

垃圾的最大年龄,代表对象在Survivor区经过10次复制以后才进入老年代。如果设置为0,则年轻代对象不经过Survivor区,直接进入老年代。

*************************************优雅的分割线 **********************************

分享一波:程序员赚外快-必看的巅峰干货

如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程

请关注微信公众号:HB荷包

一个能让你学习技术和赚钱方法的公众号,持续更新

详解:JVM内存调优参数相关推荐

  1. 一步步带你详解JVM性能调优

    性能调优 性能调优包含多个层次,比如:架构调优.代码调优.JVM调优.数据库调优.操作系统调优等. 架构调优和代码调优是JVM调优的基础,其中架构调优是对系统影响最大的. 性能调优基本上按照以下步骤进 ...

  2. JVM内存调优参数概要

    逝者如斯夫,不舍昼夜. -server JVM的server模式,64位版本只支持server模式. -Xmx 指定堆所分配内存的最大值. -Xms 指定堆所分配内存的初始值. -Xmn 指定堆的年轻 ...

  3. 详解JVM内存管理与垃圾回收机制5 - Java中的4种引用类型

    在Java语言中,除了基础数据类型的变量以外,其他的都是引用类型,指向各种不同的对象.在前文我们也已经知道,Java中的引用可以是认为对指针的封装,这个指针中存储的值代表的是另外一块内存的起始地址(对 ...

  4. 关于JVM调优的工具及JVM 常见调优参数

    六个命令行排查工具 我们一般使用 JDK 自带的 6 个命令行工具来排查JVM.它们分别是:jps.jstat.jinfo.jmap.jhat 和 jstack,它们都位于 JDK 的 bin 目录下 ...

  5. JVM内存调优原则及几种JVM内存调优方法

    JVM内存调优原则及几种JVM内存调优方法 1.堆大小设置. 2.回收器选择. 1.在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因 ...

  6. 详解JVM内存管理与垃圾回收机制2 - 何为垃圾

    随着编程语言的发展,GC的功能不断增强,性能也不断提高,作为语言背后的无名英雄,GC离我们的工作似乎越来越远.作为Java程序员,对这一点也许会有更深的体会,我们不需要了解太多与GC相关的知识,就能很 ...

  7. JVM启动参数详解(含调优)

    java启动参数共分为三类: 其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容: 其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足, ...

  8. 深入详解JVM内存模型与JVM参数详细配置

    本系列会持续更新. JVM基本是BAT面试必考的内容,今天我们先从JVM内存模型开启详解整个JVM系列,希望看完整个系列后,可以轻松通过BAT关于JVM的考核. BAT必考JVM系列专题 1.JVM内 ...

  9. 直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置

    JVM基本是BAT面试必考的内容,今天我们先从JVM内存模型开启详解整个JVM系列,希望看完整个系列后,可以轻松通过BAT关于JVM的考核. BAT必考JVM系列专题 1.JVM内存模型 2.JVM垃 ...

最新文章

  1. HDU 4873 ZCC Loves Intersection(JAVA、大数、推公式)
  2. 设置函数环境——setfenv
  3. 【数据挖掘】特征相关性挖掘神器-线性非线性关系一键挖掘!
  4. 特征值分解与奇异值分解的相关学习记录
  5. java 编译原理 字符串_Java编译原理(javac)
  6. 延时消息_Handler的消息延时是怎么实现的
  7. [JavaWeb-Servlet]Servlet中的生命周期方法(init,service,destroy)
  8. 2019 wannafly winter camp day5-8代码库
  9. LeetCode 831. 隐藏个人信息
  10. 不玩虚的!深入B端SaaS产品设计核心理念【干货】
  11. js禁止粘贴非数字内容
  12. BZOJ 1076: [SCOI2008]奖励关 [DP 期望 状压]
  13. Android笔记 theme主题
  14. 同一域名端口下,通过nginx部署多个vue项目
  15. 从超融合到全面云化,深信服云计算战略与品牌双升级
  16. 屌丝就爱尝鲜头——java8再判断
  17. 流程DEMO-费用报销
  18. php开启filtervar_PHP如何使用filter_var()函数?(代码示例)
  19. Windows下让Tomcat6定时重启服务的方法
  20. 无基础如何备考软考软件设计师?

热门文章

  1. jq获取表格里的checkbox_Python抓取网页表格(一)
  2. java 泛型 继承_java基础之泛型的继承
  3. MySQL命令梳理_MySQL操作命令梳理(2)
  4. 【JAVA基础篇】内部类
  5. tomcat开发远程调试端口以及利用eclipse进行远程调试
  6. poj2060Taxi Cab Scheme(二分图匹配)
  7. poj 3352Road Construction(无向双连通分量的分解)
  8. 树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测
  9. 2019年蓝桥杯第一题
  10. rust新版组队指令_Rust最新控制台命令2017