zoukankan      html  css  js  c++  java
  • 服务器怎么样设置才能减小GC后调整堆大小的压力?

    服务器怎么样设置才能减小GC后调整堆大小的压力?

    答:在线上生产环境中,可以通过设置JVM的Xms与Xmx的大小一样的内存容量,可以减小在 GC 后调整 堆大小带来的压力。

    Xmx是java的一个选项,用来设置你的应用程序能够使用的最大内存数(看好,只是你的应用程序,不是整个jvm)

    Xms是另一个设置内存的参数,用它来设置程序初始化的时候内存栈的大小,增加这个值的话你的程序的启动性能会得到提高。

     例如:启动命令如下:java -server -Xms128m -Xmx128m -jar xxxx.jar

    命令$ java -X     ------》可以查看

      ...
        -Xms<size>        set initial Java `heap size`
        -Xmx<size>        set maximum Java `heap size`

        ...

    JVM参数设置优化例子

    1. 承受海量访问的动态Web应用
    服务器配置:8 CPU, 8G MEM, JDK 1.6.X
    参数方案:
    -server -Xmx3550m -Xms3550m -Xmn1256m -Xss128k -XX:SurvivorRatio=6 -XX:MaxPermSize=256m -XX:ParallelGCThreads=8 -XX:MaxTenuringThreshold=0 -XX:+UseConcMarkSweepGC
    调优说明:
    -Xmx 与 -Xms 相同以避免JVM反复重新申请内存。-Xmx 的大小约等于系统内存大小的一半,即充分利用系统资源,又给予系统安全运行的空间。
    -Xmn1256m 设置年轻代大小为1256MB。此值对系统性能影响较大,Sun官方推荐配置年轻代大小为整个堆的3/8。
    -Xss128k 设置较小的线程栈以支持创建更多的线程,支持海量访问,并提升系统性能。
    -XX:SurvivorRatio=6 设置年轻代中Eden区与Survivor区的比值。系统默认是8,根据经验设置为6,则2个Survivor区与1个Eden区的比值为2:6,一个Survivor区占整个年轻代的1/8。
    -XX:ParallelGCThreads=8 配置并行收集器的线程数,即同时8个线程一起进行垃圾回收。此值一般配置为与CPU数目相等。
    -XX:MaxTenuringThreshold=0 设置垃圾最大年龄(在年轻代的存活次数)。如果设置为0的话,则年轻代对象不经过Survivor区直接进入年老代。对于年老代比较多的应用,可以提高效率;如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概率。根据被海量访问的动态Web应用之特点,其内存要么被缓存起来以减少直接访问DB,要么被快速回收以支持高并发海量请求,因此其内存对象在年轻代存活多次意义不大,可以直接进入年老代,根据实际应用效果,在这里设置此值为0。
    -XX:+UseConcMarkSweepGC 设置年老代为并发收集。CMS(ConcMarkSweepGC)收集的目标是尽量减少应用的暂停时间,减少Full GC发生的几率,利用和应用程序线程并发的垃圾回收线程来标记清除年老代内存,适用于应用中存在比较多的长生命周期对象的情况。
    2. 内部集成构建服务器案例
    高性能数据处理的工具应用
    服务器配置:1 CPU, 4G MEM, JDK 1.6.X
    参数方案:
    -server -XX:PermSize=196m -XX:MaxPermSize=196m -Xmn320m -Xms768m -Xmx1024m
    调优说明:
    -XX:PermSize=196m -XX:MaxPermSize=196m 根据集成构建的特点,大规模的系统编译可能需要加载大量的Java类到内存中,所以预先分配好大量的持久代内存是高效和必要的。
    -Xmn320m 遵循年轻代大小为整个堆的3/8原则。
    -Xms768m -Xmx1024m 根据系统大致能够承受的堆内存大小设置即可。

    学习阿里规范

    引用:http://www.51gjie.com/java/551.html

    引用:https://blog.csdn.net/KingJin_CSDN_/article/details/80923978

  • 相关阅读:
    全文本搜索神器
    唯一索引和普通索引怎么选择
    程序员应不应该搞全栈
    c 的陷阱
    抽象能力
    电影电视剧推荐
    系统故障诊断
    一次web网站被入侵的处理记录
    Spark RDD 操作
    (转)Mysql哪些字段适合建立索引
  • 原文地址:https://www.cnblogs.com/XiDaPuBen/p/12813166.html
Copyright © 2011-2022 走看看