• 虚拟机配置参数


     
    标准参数:
    保证所有JVM的实现都可以支持
     
    -client
    设置Hotspot client jvm,64位jdk会忽略该参数并设置-server
     
    -Dproperty=value
    用于设置系统属性,如果value中有空格,则需要设置-Dproperty="value value"
     
    -server
    选择Hotspot Server JVM,64位jdk只支持server VM.
    这个参数是隐含的,即默认设置
     
    -verbose:class
    显示加载的每个class信息
     
    非标准参数:
    一般被用于HotSpot JVM,所以他们不能保证所有的JVM实现都可用,
    这些参数以-X开头
     
    -Xloggc:garbage-collection.log
    设置详细GC事件信息重定向到指定的日志记录的文件
     
    -Xmn256m
    设置初始化以及最大young区
    堆中的young代区用于创建Object
    GC在young代执行比其他区域频繁
    如果young区被设置的很小,会导致一些小的gc频繁执行
    如果young区被设置的很大,会导致只有full gc时才可以被执行回收young区,并且会消耗很长时间
    Oracle建议young区设置为全部堆的一半到四分之一
    可以分别设置 -XX:NewSize初始化大小以及-XX:MaxNewSize最大young区两个配置来代替-Xmn配置
     
    -Xms6m
    设置初始化堆(字节)大小,这个值必须是1024的倍数并且大于1MB
    如果没有设置这个区大小,这个初始化大小将被设置为old区和young区的合计大小
     
    -Xmx80m
    指定内存分配池的最大字节数
    这个值比较时1024的倍数并且大于2M
    默认值会根据系统运行的配置选择
    对应一些服务端应用, -Xms与-Xmx通常配置为相同大小、
    -Xmx等同于-XX:MaxHeapSize
     
    -Xnoclassgc
    用于禁用GC,这可以节省一些在系统运行期间短暂暂停的时间
     
    -Xss1024k
    设置每个线程栈的大小
    -Xss等同于-XX:ThreadStackSize
    这个值可以根据不同操作系统自动设置大小:
    Linux/ARM (32-bit): 320 KB
    Linux/i386 (32-bit): 320 KB
    Linux/x64 (64-bit): 1024 KB
    OS X (64-bit): 1024 KB
    Oracle Solaris/i386 (32-bit): 320 KB
    Oracle Solaris/x64 (64-bit): 1024 KB
     
    高级运行时参数:
    不建议随便设置这些是用于调优Java HotSpot虚拟机操作的特定领域的开发人员选项,这些领域通常具有特定的系统需求,并且可能需要特权访问系统配置参数。
    这类命令以-XX开头
     
    -XX:+UseConcMarkSweepGC
    为旧代启用CMS垃圾收集器。当吞吐量(-XX:+UseParallelGC)垃圾收集器无法满足应用程序延迟需求时,Oracle建议您使用CMS垃圾收集器。G1垃圾收集器(-XX:+UseG1GC)是另一种选择。
     
    -XX:+UseG1GC
    启用垃圾优先(G1)垃圾收集器。它是一个服务器风格的垃圾收集器,目标是具有大量RAM的多处理器机器。它满足GC暂停时间目标的可能性很高,同时保持良好的吞吐量。对于需要大堆(大小约6gb或更大)、GC延迟要求有限(稳定且可预测的暂停时间低于0.5秒)的应用程序,建议使用G1收集器。
     
    -XX:+UseParallelGC
    允许使用并行清除垃圾收集器(也称为吞吐量收集器)通过利用多个处理器来提高应用程序的性能。
    默认情况下,禁用此选项,并且根据机器的配置和JVM类型自动选择收集器。如果启用了-XX:+UseParallelOldGC选项,则自动启用,除非显式禁用。
     
    -XX:+UseParallelOldGC
    对于Full GC,使用并行回收GC,
    使用-XX:+UseParallelGC选项时会默认启用该选项
     
    -XX:+UseParNewGC
    在young区使用并行回收GC
     
    -XX:+UseSerialGC
    启用串行垃圾收集器。对于不需要垃圾收集提供任何特殊功能的小型简单应用程序,这通常是最佳选择。默认情况下,禁用此选项,并且根据机器的配置和JVM类型自动选择收集器。
     
    -XX:ErrorFile=/var/log/java/java_error.log
    指定当出现不能复现的错误时错误日志应该输出到的文件地址
    默认这个文件创建在工作路径下的hs_err_pid.log中
     
    -XX:MaxDirectMemorySize=1m
    设置New I/O可以分配的最大【直接缓冲区】字节数
    默认这是为0,即jvm自动选择New I/O可分配的【直接缓冲区】字节大小
     
    -XX:ThreadStackSize=1m
    指定线程栈大小
     
     
    -XX:LogFile=/var/log/java/hotspot.log
    设置日志地址
     
    高级的GC选项
    这些选择用于Hotspot VM
     
    -XX:+AggressiveHeap
    启用java堆优化,基于RAM和CPU的配置通过设置各种参数使其跟适合带有密集分配内存的长时间任务的分配
    默认关闭的
     
    -XX:ConcGCThreads=2
    设置用于并发GC的线程数
    默认为CPU数
     
    -XX:+DisableExplicitGC
    禁用堆System.gc()的处理
     
    -XX:+ExplicitGCInvokesConcurrent
    通过使用System.gc()调用并发GC,这个参数只有在-XX:+UseConcMarkSweepGC一起使用时才有效
    默认关闭
     
    -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
    通过使用System.gc()调用并发GC并且在GC期间不加载class,这个参数只有在-XX:+UseConcMarkSweepGC一起使用时才有效
    默认关闭
     
    -XX:G1HeapRegionSize=16m
    设置在使用垃圾优先(G1)收集器时将Java堆细分到的区域的大小
    这个值在1M到32M之间
     
    -XX:+G1PrintHeapRegions
    能够打印有关分配哪些区域以及哪些区域由G1收集器回收的信息
    默认关闭
     
    -XX:G1ReservePercent=20
     
    -XX:InitialHeapSize=6m
    设置内存池分配的初始化大小
    这个值必须是1024的倍数并且大于1M
     
    -XX:InitialSurvivorRatio=ratio
    设置垃圾回收器中survivor区的占比(在-XX:+UseParallelGC 或者 -XX:+UseParallelOldGC两个参数下才生效)
    根据青年一代的大小(Y)和初始生存者空间比(R),可以用以下公式计算生存者空间的初始大小(S):S=Y/(R+2)
    等式中的2表示两个幸存者空间。指定为初始存活空间比的值越大,初始存活空间大小越小。
    默认的survivor 区占比是8
    如果默认值young区为2M,则survivor区打下为0.2M
     
    -XX:MaxGCPauseMillis=500
    设置GC最大暂停时间
    这是一个软目标,JVM将尽最大努力来实现它
    默认没有最大的时间暂停时
    单位是毫秒
     
    -XX:MaxHeapSize=80m
    设置最大的可分配内存池大小
    -XX:MaxHeapSize等同于-Xmx
     
    -XX:MaxHeapFreeRatio=percent
    -XX:MaxHeapFreeRatio=75
    设置一次GC事件后最大的空余堆占比,如果实际空余堆空间扩张到了这个占比,那么堆空间将进行收缩
    默认设置70%
     
    -XX:MinHeapFreeRatio=percent
    设置一次GC事件后最小的空余堆占比,如果实际空余堆空间低于这个占比,那么堆空间将进行扩展
    默认设置40%
     
    -XX:MaxMetaspaceSize=size
    -XX:MaxMetaspaceSize=256m
    设置能够被分配给class原数据使用的最大本地内存
    默认没有限制
    应用程序的元数据数量取决于应用程序本身、其他正在运行的应用程序以及系统上可用的内存数量
     
    -XX:MetaspaceSize=size
    设置所分配的类元数据空间的大小,该空间将在第一次超过该空间时触发垃圾收集
    根据所使用的元数据的数量,增加或减少垃圾收集的阈值。
     
    -XX:MaxNewSize=size
    设置最大的young区大小
     
    -XX:MaxTenuringThreshold=threshold
    设置用于自适应GC分级的最大拉伸阈值。最大的值是15。并行(吞吐量)收集器的默认值是15,CMS收集器的默认值是6。
     
    -XX:NewRatio=ratio
    设置young区与old区的比例
    默认比例为2
     
    -XX:NewSize=size
    -XX:NewSize=256m
    设置young区堆的初始化大小
    堆中的young代区用于创建Object
    GC在young代执行比其他区域频繁
    如果young区被设置的很小,会导致一些小的gc频繁执行
    如果young区被设置的很大,会导致只有full gc时才可以被执行回收young区,并且会消耗很长时间
    Oracle建议young区设置为全部堆的一半到四分之一
     
    -XX:ParallelGCThreads=threads
    设置在young区与old区进行并行GC的最大线程数
     
    -XX:+PrintGC
    每次GC打印信息
     
    -XX:+PrintGCDetails
    每次GC打印详细信息
     
    -XX:SurvivorRatio=ratio
    -XX:SurvivorRatio=4
    设置eden空间大小与幸存者空间大小的比值
     
    -XX:TargetSurvivorRatio=percent
    -XX:TargetSurvivorRatio=30
    设置在年轻垃圾收集之后使用的存活空间的期望百分比(0到100)
     
     
    收藏文章数量从多到少与“把书读薄”是一个道理
  • 相关阅读:
    PyCharm配置SFTP远程调试Django应用
    linux安装mysql详细步骤
    一些unity问题的收集
    主程之路
    【英宝通Unity4.0公开课学习 】(六)76讲到90讲
    【英宝通Unity4.0公开课学习 】(五)47讲到75讲
    【英宝通Unity4.0公开课学习 】(四)GUI到物理引擎
    【英宝通Unity4.0公开课学习 】(三)脚本使用
    【英宝通Unity4.0公开课学习 】(二)场景创建
    【英宝通Unity4.0公开课学习 】(一)资源管理
  • 原文地址:https://www.cnblogs.com/use-D/p/9562285.html
Copyright © 2020-2023  润新知