对于JDK8。不准确或错误的的地方 望大佬指点

1。 基本参数:
-Xms = 2048m 最小内存
-Xmx = 2048m 最大内存。如果不设置,空间不足的时候,会一直扩大,影响服务器性能。开始不懂没有设置也会被鄙视!
设置为一样 避免垃圾回收进行重新分配内存(话是这么说)
-Xmn = 1024m 年轻代。 大小设置 如果希望对象快速进入年老代可以 设小一些。

ps:年轻代分两部分 eden区、survivor区。
所有 新创建的对象 第一个进入的就是 eden区。
YGC回收活下来的 (YoungGC)
进入 survivor的 “to”区 (survivor有from区与to区,to区都是空的!为什么?待会儿说)。
每个对象都会记录 经过几次gc 存活下来。

eden → survivor“to”。

YGC针对的是年轻代 所以survivor 也会被回收。然后to区是空的。瞎吗上面不是到to区了吗!
从survivor“from”活下的也进入survivor的“to”区(刚刚说有记录经过多少次YGC活下来,是的,活到一定次数(这个次数你可以自己设置)就进入年老代了不去to区了)。 等等 to 区有了 , 你骗人啊!不是说空的吗!
啥!啥!啥!以下语速加快200个百分点
YGC完成清空eden区survivor“from”区。
survivor“to”区 改名字变成 “from”。“from”区不是刚刚被清空了吗,改名叫做“to”区
→_→ 你看看,是不是 “to”区 是空的吧! 曾经拥有。。。 Who care? 哈哈哈。
转移的时候to空间不够的话 活下来的会直接进入 年老代 (怪只怪to区太小,后来者居上!直接退休(总会被回收的,不怕年老代也会GC哦))

还有年老代,元空间(原先是永久代,不仅仅是改名字哦)

Young(eden|survivor(from|to))|Old|MetaSpace
差不多这个样子。

回来继续说参数!

-XX:NewRatio=4 这个是 年老代空间与年轻代空间的比例 old/young = 4
(上面已经设置了年轻代的大小 这个可以不用设置啦)
-XX:SurvivorRatio=4 这个是 eden 与 survivor 空间比例 eden/survivor = 4 (ps survivor 有两个!)
这个是调优的一个重要参数!因为我说过to区是空的!就是说to区一直都是空置的 不得不浪费。
长这个样子 EEEE SS 看懂了吗 = = ok 就这样。 5的话就是这样 EEEEE SS

-XX:MaxTenuringThreshold = 7 第8次没死 就可以去年老区养老啦。每个对象被YGC的次数都会记下来超过这个阈值就会进入年老区 就是前面说的 survivor “from”正常进入 old

这个设置 默认是15 ? 自己随便设置一下吧 挺重要的。 这个时候就要考虑自己应用YGC活下的对象需要进入年老区的一般需要经历多少次的GC 。慢慢调。

-XX:+UseCompressedOops 使用(+开启 -关闭) 貌似默认开启 所以 不设置呗。
干嘛用的, 64位机子压缩数据长度的? 自己看哈。
参考 http://www.cnblogs.com/magialmoon/p/3757767.html

2。垃圾回收配置

先看看有哪些垃圾回收器。 选好策略很重要要
①Serial GC(-XX:+UseSerialGC):Serial GC使用简单的标记、清除、压缩方法对年轻代和年老代进行垃圾回收。
试用: 各种低配 jvm
②Parallel GC(-XX:+UseParallelGC):进化版Serial GC。 多线程回收年轻代,单线程回收年老代。
③Parallel Old GC(-XX:+UseParallelOldGC): 进化版Parallel GC。 想想就知道干了啥吧。 年老代也多线程了。
④CMS GC(-XX:+UseConcMarkSweepGC):这个是并发短暂停顿的多线程回收。针对年老代的回收。这个除了标记是独占系统资源其他动作都是与应用并发进行的!66的。 Parallel Old GC这个是所有动作独占系统资源的,回收年老代的时候,应用不能动哦。(新JVM中 -XX:+UseParNewGC 启用这个CMS是 这个也会启动,所以 年轻代的回收 就会变成 并行的! 感觉像是Parallel Old GC在老年代改了一下。)
PS:用这个的话 -XX:NewRatio这个配置是不会生效的 但是 直接设置年轻代 Xmn这个还是可以的。
⑤G1 GC :区别 堆结构不要求连续! 就是那里一块年轻代 这里一块年轻代 随便放!
切块很多部分小 Y、O,每次一小部分进行回收。
参考:
http://ifeve.com/深入理解g1垃圾收集器/
据说:(我不负责的,我并没有测试过)吞吐相对 CMS GC差!虽然延时好一丢丢。

我用的是CMS 以此来举例。

-XX+UseCMSCompactAtFullCollection 加吧,可以压缩碎片。CMS不会移动内存,容易产生碎片(内存利用率低,容易触发FULLGC,这里说一下GC 还是只有两个 jasta 可以看见 YGC ,FGC 。 CMS 有的时候会引起较多的FULLGC = = 但是相对其他的回收器而言即使次数多但是时间短!)这个会在FULLGC 之后进行 碎片整理,以提高内存利用率 。
可以通过 -XX:CMSFullGCsBeforeCompaction=2 设置fullgc几次 后进行压缩碎片

-XX:CMSInitiatingOccupancyFraction=68 默认的是68 如果年老区数据稳定,可以通过增加这个值减少CMS 启动的次数。
搭配**-XX:+UseCMSInitiatingOccupancyOnly ** 每次都是用这个配置进行CMS回收 不加的话后面的数值就都是 HotSpot VM 算出来的 你的68也就是 第一次生效而已。
调优手段之一
这个值其实 看CMS gc 是不是频繁,而且空间是否可用。其实我不想设置,自己算嘛。而且各个参数的配置的不合理会导致 promotion failed!这个是啥? 百度!

-XX:+DisableExplicitGC 拒绝手动GC 关闭 System.gc();

-XX:+HeapDumpOnOutOfMemoryError OOM的时候生成dump 快照文件

** -XX:+UseParNewGC** 年轻代并行回收 不想开启的话 可以 -XX:-UseParNewGC

-XX:+UseFastAccessorMethods 原始类型的快速优化。 偶尔会进行推荐。JDK 7 之后默认false。
why? 参考:http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2011-March/005057.html

-XX:+ExplicitGCInvokesConcurrent 添加后 CMS GC开始会触发FULLGC 。
CMS GC 耗时其实更多 所以 QPS 要求高的 不要频繁CMS GC

以上供参考。欢迎指出其中的不足。

JVM 参数学习--实际参数设置相关推荐

  1. [云炬python3玩转机器学习笔记] 2-4批量学习、咋西安学习、参数学习和非参数学习

    机器学习的其他分类: 在线学习(online learining)和批量学习(离线学习 batch learning/offline learning): 批量学习(之前没有具体说明的话,都可以用批量 ...

  2. jvm内存参数配置_idea中设置JVM参数,简单理解JVM常见参数,JVM调优简单入门

    前面学习了JVM的内存分布,今天就来验证下.顺便通过测试学习一下JVM的几个参数,不过测试是在idea中,所以先要在idea上设置JVM参数. 一.idea设置全局的JVM参数 一共三步,第一步在菜单 ...

  3. jvm默认的初始化参数_您是否应该信任JVM中的默认设置?

    jvm默认的初始化参数 如今,JVM被认为是智能的. 预期配置不多-只需设置要在启动脚本中使用的最大堆,您就可以进行了. 所有其他默认设置都很好. 大概我们当中有些人误以为. 实际上,在运行时期间发生 ...

  4. HALCON 20.11:深度学习笔记(5)---设置超参数

    HALCON 20.11:深度学习笔记(5)---设置超参数 HALCON 20.11.0.0中,实现了深度学习方法.关于超参数的有关设置内容如下: 不同的DL方法被设计用于不同的任务,它们的构建方式 ...

  5. IDEA JVM 性能优化 相关参数设置

    文章目录 IDEA JVM 性能优化 相关参数设置 IDEA JVM 性能优化 相关参数设置 点击 Help - Edit Custom VM Options -Xms256m -Xmx2048m - ...

  6. JVM-常见JVM参数、如何查看JVM参数、如何动态设置JVM参数

    1 JVM参数 1.1 标准参数 // 查看java版本 -version // help命令就不用了说了吧 -help // -server // 指定类运行所依赖其他类的路径,通常是类库和jar包 ...

  7. JVM调优及参数设置

    (1)参数 -Xms:初始堆大小 -Xmx :最大堆大小 此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存 -Xmn :年轻代大小 整个堆大小=年轻代大小 + 年老代大小 + 持 ...

  8. JVM的进阶学习(GC Roots、JVM调优与参数配置、)

    1. GC Roots,可达性分析 从GC roots的对象作为起始点,从GC Roots对象开始向下搜索,如果一个对象到GCRoots没有任何引用链相连,则说明对象不可用.即给定一个集合的引用作为根 ...

  9. JVM虚拟机的一些参数设置

    本文持续更新..... 1.GC的输出日志: a. -verbose:gc,辅助输出一些详细的gc信息 b. -XX:+PrintGCDetails,输出gc的详细信息 c. -XX:PrintGCA ...

  10. 详解:JVM内存调优参数

    分享一波:程序员赚外快-必看的巅峰干货 -Xms JVM启动时申请的初始Heap值,默认为操作系统物理内存的1/64但小于1G.默认当空余堆内存大于70%时,JVM会减小heap的大小到-Xms指定的 ...

最新文章

  1. 04:sqlalchemy操作数据库 不错
  2. Qt 3D的未来展望
  3. 重磅发布!阿里云云效《阿里巴巴DevOps实践指南》
  4. 计算机网络王小茹,计算机网络(王小茹)3.pdf
  5. MySQL存储过程之事务管理
  6. Mysql索引的类型和优缺点
  7. Spring Java配置:会话超时
  8. mybatis学习(30):修改功能
  9. fastcopy比正常复制快多少_高中三年,每个阶段考多少分才正常?快对比一下
  10. Symbian编程VC开发环境设置
  11. python 重写抽象类编译错误_从零开始的Java之旅5.0继承、super、this、抽象类
  12. 在计算机中如何共享文件夹,如何打开计算机共享-在电脑里设置了共享文件在另在一台电脑里怎么 – 手机爱问...
  13. caj阅读器Mac版下载
  14. 毕业设计 - 题目:基于深度学习的中文汉字识别 - 深度学习 卷积神经网络 机器视觉 OCR
  15. android绘制半圆弧线_半圆形进度条Android - 绘制半圆
  16. 最近三次蓝屏Bluescreen STOP 0x000000ea
  17. Windows CMD DOS命令
  18. web服务 面试可能会问的问题
  19. 简单又漂亮的思维导图怎么画?脑图创作分享
  20. 火鸟门户v4.0 2019全能地方门户系统源码

热门文章

  1. mysql jion on 三表_MySQL 三表连接(join)
  2. postgresql10中的pg_stat_statements
  3. java中三元运算符_java中的三元运算符详解
  4. 现在更新鸿蒙会成为小白鼠吗,猫和老鼠鸿蒙版下载-猫和老鼠网易官方手游鸿蒙版 v7.8.4-114手机乐园...
  5. 双摄像头实时视频拼接(平移模型)
  6. Finite State Transducer(FST)in NLP
  7. 小程序向数组中添加数据
  8. 一小心删除了系统文件NTDETECT.COM怎么办
  9. 下城投 × 奇点云 |「数智城投驾驶舱」,打造转型示范新样板
  10. arcgis runtime for android 100.13.0 入门系列,三、加载shp,kml,tpk文件,图层定位,toolkit工具