`
snoopy7713
  • 浏览: 1148853 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

JAVA启动参数大全之三:非Stable参数

    博客分类:
  • JVM
阅读更多

前面我们提到用-XX作为前缀的参数列表在jvm中可能是不健壮的,SUN也不推荐使用,后续可能会在没有通知的情况下就直接取消了;但是由于这些参数中的确有很多是对我们很有用的,比如我们经常会见到的-XX:PermSize、-XX:MaxPermSize等等;

下面我们将就Java HotSpot VM中-XX:的可配置参数列表进行描述;
这些参数可以被松散的聚合成三类:
行为参数(Behavioral Options):用于改变jvm的一些基础行为;
性能调优(Performance Tuning):用于jvm的性能调优;
调试参数(Debugging Options):一般用于打开跟踪、打印、输出等jvm参数,用于显示jvm更加详细的信息;

由于sun官方文档中对各参数的描述也都非常少(大多只有一句话),而且大多涉及OS层面的东西,很难描述清楚,所以以下是挑选了一些我们开发中可能会用得比较多的配置项,若需要查看所有参数列表,可以点击HotSpot VM Specific Options.查看原文;

首先来介绍行为参数

参数及其默认值

描述

-XX:-DisableExplicitGC

禁止调用System.gc() ;但jvmgc 仍然有效

-XX:+MaxFDLimit

最大化文件描述符的数量限制

-XX:+ScavengeBeforeFullGC

新生代GC 优先于Full GC 执行

-XX:+UseGCOverheadLimit

在抛出OOM 之前限制jvm 耗费在GC 上的时间比例

-XX:-UseConcMarkSweepGC

对老生代采用并发标记交换算法进行GC

-XX:-UseParallelGC

启用并行GC

-XX:-UseParallelOldGC

Full GC 启用并行,当-XX:-UseParallelGC 启用时该项自动启用

-XX:-UseSerialGC

启用串行GC

-XX:+UseThreadPriorities

启用本地线程优先级


上面表格中黑体的三个参数代表着jvmGC 执行的三种方式,即串行、并行、并发
串行SerialGCjvm 的默认GC 方式,一般适用于小型应用和单处理器,算法比较简单,GC 效率也较高,但可能会给应用带来停顿;
并行ParallelGC 是指GC 运行时,对应用程序运行没有影响,GCapp 两者的线程在并发执行,这样可以最大限度不影响app 的运行;
并发ConcMarkSweepGC 是指多个线程并发执行GC ,一般适用于多处理器系统中,可以提高GC 的效率,但算法复杂,系统消耗较大;


性能调优 参数列表:

参数及其默认值

描述

-XX:LargePageSizeInBytes=4m

设置用于Java 堆的大页面尺寸

-XX:MaxHeapFreeRatio=70

GC java 堆中空闲量占的最大比例

-XX:MaxNewSize=size

新生成对象能占用内存的最大值

-XX:MaxPermSize=64m

老生代对象能占用内存的最大值

-XX:MinHeapFreeRatio=40

GC java 堆中空闲量占的最小比例

-XX:NewRatio=2

新生代内存容量与老生代内存容量的比例

-XX:NewSize=2.125m

新生代对象生成时占用内存的默认值

-XX:ReservedCodeCacheSize=32m

保留代码占用的内存容量

-XX:ThreadStackSize=512

设置线程栈大小,若为0 则使用系统默认值

-XX:+UseLargePages

使用大页面内存

 

我们在日常性能调优中基本上都会用到以上黑体的这几个属性; 

调试参数 列表:

参数及其默认值

描述

-XX:-CITime

打印消耗在JIT 编译的时间

-XX:ErrorFile=./hs_err_pid<pid>.log

保存错误日志或者数据到文件中

-XX:-ExtendedDTraceProbes

开启solaris 特有的dtrace 探针

-XX:HeapDumpPath=./java_pid<pid>.hprof

指定导出堆信息时的路径或文件名

-XX:-HeapDumpOnOutOfMemoryError

当首次遭遇OOM 时导出此时堆中相关信息

-XX:OnError="<cmd args>;<cmd args>"

出现致命ERROR 之后运行自定义命令

-XX:OnOutOfMemoryError="<cmd args>;<cmd args>"

当首次遭遇OOM 时执行自定义命令

-XX:-PrintClassHistogram

遇到Ctrl-Break 后打印类实例的柱状信息,与jmap -histo 功能相同

-XX:-PrintConcurrentLocks

遇到Ctrl-Break 后打印并发锁的相关信息,与jstack -l 功能相同

-XX:-PrintCommandLineFlags

打印在命令行中出现过的标记

-XX:-PrintCompilation

当一个方法被编译时打印相关信息

-XX:-PrintGC

每次GC 时打印相关信息

-XX:-PrintGC Details

每次GC 时打印详细信息

-XX:-PrintGCTimeStamps

打印每次GC 的时间戳

-XX:-TraceClassLoading

跟踪类的加载信息

-XX:-TraceClassLoadingPreorder

跟踪被引用到的所有类的加载信息

-XX:-TraceClassResolution

跟踪常量池

-XX:-TraceClassUnloading

跟踪类的卸载信息

-XX:-TraceLoaderConstraints

跟踪类加载器约束的相关信息


当系统出现问题的时候,又不能使用外部跟踪工具(比如JProfiler…… )的情况下,以上的这些参数就会发挥重大作用了,比如dump 堆信息、打印并发锁

分享到:
评论

相关推荐

    JAVA启动参数大全

    ### JAVA启动参数详解 #### 一、概述 Java 虚拟机 (JVM) 的启动参数对于调整和优化 Java 应用程序的性能至关重要。根据不同的应用场景和需求,合理选择和配置这些参数能够显著提升应用程序的运行效率。Java 启动...

    JAVA启动参数大全.pdf

    Java启动参数主要分为三类:标准参数(-)、非标准参数(-X)和非Stable参数(-XX)。 标准参数是所有Java虚拟机(JVM)实现必须支持的,且保证向后兼容。以下是一些重要的标准参数: 1. `-client`:选择客户端JVM模式,...

    JAVA启动参数大全1.pdf

    这篇文章将深入探讨Java的三种启动参数类别:标准参数、非标准参数和非Stable参数,并着重介绍标准参数。 首先,标准参数是所有JVM实现必须支持且保持向后兼容的选项。以下是一些重要的标准参数: 1. `-client`:...

    Jvm 优化手册

    #### 非标准参数与非Stable参数:灵活与风险并存 **非标准参数(-X)**与**非Stable参数(-XX)**提供了更为精细的JVM配置选项,但它们的兼容性和稳定性无法得到保证。非标准参数通常包含了一些优化选项,如垃圾...

    基于Spring Boot框架的JVM性能调优与内存管理.zip

    支持标准参数、非标准参数和非Stable参数的配置,帮助开发者根据应用需求调整JVM的启动行为。 2. JVM监控工具 提供多种JVM监控工具的使用示例,如jps、jstat、jmap、jhat、jstack、jinfo和jcmd,帮助开发者实时...

    Stable Diffusion WebUI linux部署问题

    在Linux环境中部署Stable Diffusion WebUI可能会遇到各种挑战,但通过正确的步骤和理解关键概念,我们可以轻松地解决这些问题。Stable Diffusion WebUI通常是一个基于Web的界面,用于管理和监控分布式系统,如数据...

    pdi-ce-stable-JDBC

    这可以通过在Kettle的"系统设置"中指定额外的库目录,或者在启动脚本中添加`-cp`或`-classpath`参数来实现。 标签 "kettle" 明确指出了这个话题与Kettle工具紧密相关。Kettle提供了丰富的ETL功能,包括数据清洗、...

    jrebel-stable-nosetup.zip

    - 应用服务器配置:根据所使用的应用服务器,调整其启动参数,确保加载 JRebel 的代理服务器。 4. **使用技巧**: - 利用 JRebel 的日志功能,可以追踪热部署过程,帮助诊断问题。 - 在大型项目中,通过 JRebel ...

    Stable Diffusion AI绘画软甲的部署、训练模型.docx

    - 在云平台上运行Stable Diffusion的启动脚本,启动后端服务。 - 通过云平台的网络设置,确保可以访问Stable Diffusion的WebUI界面。 **注意事项**: - 云端部署的优点是不受本机硬件限制,可以利用云平台的强大...

    ngrok-stable-windows-amd64.zip

    在Windows系统上,双击运行此文件即可启动ngrok服务。首次使用时,需要注册并登录ngrok账户,以便获得免费或付费的服务计划。 ngrok 提供了多种使用模式,包括HTTP、HTTPS、TCP和WebRTC。你可以通过命令行参数来...

    java版memcache缓存管理与开发

    ### Java版Memcache缓存管理与开发 #### Memcache简介及其在高流量网站中的作用 在高流量网站中,为了缓解数据库的压力并提高网站响应速度,通常会采用Memcache作为缓存解决方案。Memcache是一种高性能、分布式...

    wrapper-win-3.5.32

    通过Wrapper,Java程序能够像其他Windows服务一样被管理,如启动、停止、设置启动参数等,极大地提升了系统的可管理性和稳定性。 Java Service Wrapper提供了一个名为"wrapper-win-3.5.32"的版本,这表明它是针对...

    [博客空间]JSPWiki stable release v2.2.33_jspwiki-2.2.33-src.rar

    JSPWiki是一款基于Java的开源wiki引擎,它允许用户通过简单的Web浏览器创建和编辑网页,类似于维基百科。这个压缩包文件"jspwiki-2.2.33-src.rar"包含的是JSPWiki的稳定版本v2.2.33的源代码,非常适合开发者进行二次...

    linux下安装jdk与memcached及memcached代理说明

    6. **启动Memcached**: 使用`/usr/local/bin/memcached`命令配置启动参数,如`-m 2048 -l 192.168.58.128 -p 8790 -d -u root -P /var/run/memcached.pid -c 500`。 **Magent安装:** 1. **创建目录**: 创建一个名...

    JBOSS\Tomcat最大连接数配置和jvm内存配置.docx

    3. **非Stable参数**(-XX):不稳定,谨慎使用,如`-XX:NewRatio`设定年轻代与老年代的比例,`-XX:NewSize`和`-XX:MaxNewSize`控制年轻代的初始和最大值,`-XX:PermSize`和`-XX:MaxPermSize`分别设置永久代的初始和...

Global site tag (gtag.js) - Google Analytics