- 浏览: 473460 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
mrshen:
很棒,在其他大神的博客上理清了思路看懂之后,来lz这里用例子学 ...
RED-BLACK(红黑)树的实现TreeMap源码阅读 -
a939639017:
yanf4j check不下来 ?
Java nio 2.0 AIO -
hellostory:
又是抄来的 - -
mysql分表方案 -
davidluoye:
为什么不说下支持的数据库呢?
模糊查询的优化 -
oliveevilo:
表示没看懂
Synchronized和java.util.concurrent.locks.Lock的区别
前面我们提到用-XX作为前缀的参数列表在jvm中可能是不健壮的,SUN也不推荐使用,后续可能会在没有通知的情况下就直接取消了;但是由于这些参数中的确有很多是对我们很有用的,比如我们经常会见到的-XX:PermSize、-XX:MaxPermSize等等;<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
下面我们将就Java HotSpot VM中-XX:的可配置参数列表进行描述;
这些参数可以被松散的聚合成三类:
行为参数(Behavioral
Options):用于改变jvm的一些基础行为;
性能调优(Performance
Tuning):用于jvm的性能调优;
调试参数(Debugging
Options):一般用于打开跟踪、打印、输出等jvm参数,用于显示jvm更加详细的信息;
由于sun官方文档中对各参数的描述也都非常少(大多只有一句话),而且大多涉及OS层面的东西,很难描述清楚,所以以下是挑选了一些我们开发中可能会用得比较多的配置项,若需要查看所有参数列表,可以点击HotSpot VM Specific Options.查看原文;
首先来介绍行为参数:
参数及其默认值 |
描述 |
-XX:-DisableExplicitGC |
禁止调用System.gc();但jvm的gc仍然有效 |
-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 |
启用本地线程优先级 |
上面表格中黑体的三个参数代表着jvm中GC执行的三种方式,即串行、并行、并发;
串行(SerialGC)是jvm的默认GC方式,一般适用于小型应用和单处理器,算法比较简单,GC效率也较高,但可能会给应用带来停顿;
并行(ParallelGC)是指GC运行时,对应用程序运行没有影响,GC和app两者的线程在并发执行,这样可以最大限度不影响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堆信息、打印并发锁……
发表评论
-
Integer“==”和Integer“equals”
2013-09-01 12:37 1305以前有碰到Integer“==”和Integer“eq ... -
java枚举类型enum的使用
2013-08-07 09:57 9004分类: java2011-04-24 23:17 6 ... -
线上TOMCAT,JAVA参数配置
2013-06-08 11:57 1371export JAVA_HOME=/export/serve ... -
HttpUrlConnection不能设置Host
2013-06-05 18:01 2790调试了一天终于找到原因了,奶奶的!! 测试就报503错误, ... -
Java访问https接口实现
2013-03-05 22:06 4808用两种方式分别实现了,第一种是jdk原生的,代码稍微多点, ... -
深入理解HASHMAP
2013-01-06 11:48 1113Hashmap是一种非常常用的、应用广泛的数据类型,最近研究到 ... -
Commons-Validator验证框架2
2012-11-29 14:00 1436Commons-Validator 博客分类: java ... -
java concurrent 探秘
2012-08-06 16:44 927我们都知道,在JDK1.5 ... -
ReentrantLock与syncronized的不同
2012-08-06 14:22 1177ReentrantLock 一个可重入的互斥锁定 ... -
log4j 日志大小
2012-08-03 17:47 1930今天群里一个哥们问一个问题: 我想先控制每天日 ... -
Apache Commons 包含的开源的工具类介绍
2012-07-24 10:17 1290原文地址:http://blog.csdn.n ... -
JAVA工具类之Apache的Commons Lang和Beanutils
2012-07-24 10:09 1460Apache Commons包估计是Java中使用最广发的工具 ... -
批处理启动JAVA程序(多JAR包)
2012-06-16 11:01 2293JavaJVMF# . 直接给出代码吧,下面是我自己为一个端口 ... -
中高级技术人员面试
2012-08-06 14:23 1371struts,spring,hiberate知识点。实际上对于 ... -
IO深度解析
2011-11-04 15:49 1164http://www.ibm.com/developerwor ... -
线程局部存储Thread Local Storage-TLS(总结整理)
2011-10-27 18:18 1799在线程的学习中我们知道每个线程除了共享进程的资源外还拥有各 ... -
正确理解ThreadLocal
2011-10-27 18:17 905http://www.iteye.com/topic/1038 ... -
读源码的建议
2011-10-11 22:01 1392才在论坛不经意间,看到有关源码阅读的帖子。回想自己前几年,阅读 ... -
java synchronized详解
2011-09-02 13:53 965Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候 ... -
开发中的陷阱
2011-09-02 09:58 9671. 虚拟机对字符串的处理 虚拟机是将字符串直 ...
相关推荐
### JAVA启动参数详解 #### 一、概述 Java 虚拟机 (JVM) 的启动参数对于调整和优化 Java 应用程序的性能至关重要。根据不同的应用场景和需求,合理选择和配置这些参数能够显著提升应用程序的运行效率。Java 启动...
Java启动参数主要分为三类:标准参数(-)、非标准参数(-X)和非Stable参数(-XX)。 标准参数是所有Java虚拟机(JVM)实现必须支持的,且保证向后兼容。以下是一些重要的标准参数: 1. `-client`:选择客户端JVM模式,...
这篇文章将深入探讨Java的三种启动参数类别:标准参数、非标准参数和非Stable参数,并着重介绍标准参数。 首先,标准参数是所有JVM实现必须支持且保持向后兼容的选项。以下是一些重要的标准参数: 1. `-client`:...
#### 非标准参数与非Stable参数:灵活与风险并存 **非标准参数(-X)**与**非Stable参数(-XX)**提供了更为精细的JVM配置选项,但它们的兼容性和稳定性无法得到保证。非标准参数通常包含了一些优化选项,如垃圾...
支持标准参数、非标准参数和非Stable参数的配置,帮助开发者根据应用需求调整JVM的启动行为。 2. JVM监控工具 提供多种JVM监控工具的使用示例,如jps、jstat、jmap、jhat、jstack、jinfo和jcmd,帮助开发者实时...
在Linux环境中部署Stable Diffusion WebUI可能会遇到各种挑战,但通过正确的步骤和理解关键概念,我们可以轻松地解决这些问题。Stable Diffusion WebUI通常是一个基于Web的界面,用于管理和监控分布式系统,如数据...
这可以通过在Kettle的"系统设置"中指定额外的库目录,或者在启动脚本中添加`-cp`或`-classpath`参数来实现。 标签 "kettle" 明确指出了这个话题与Kettle工具紧密相关。Kettle提供了丰富的ETL功能,包括数据清洗、...
- 应用服务器配置:根据所使用的应用服务器,调整其启动参数,确保加载 JRebel 的代理服务器。 4. **使用技巧**: - 利用 JRebel 的日志功能,可以追踪热部署过程,帮助诊断问题。 - 在大型项目中,通过 JRebel ...
- 在云平台上运行Stable Diffusion的启动脚本,启动后端服务。 - 通过云平台的网络设置,确保可以访问Stable Diffusion的WebUI界面。 **注意事项**: - 云端部署的优点是不受本机硬件限制,可以利用云平台的强大...
在Windows系统上,双击运行此文件即可启动ngrok服务。首次使用时,需要注册并登录ngrok账户,以便获得免费或付费的服务计划。 ngrok 提供了多种使用模式,包括HTTP、HTTPS、TCP和WebRTC。你可以通过命令行参数来...
### Java版Memcache缓存管理与开发 #### Memcache简介及其在高流量网站中的作用 在高流量网站中,为了缓解数据库的压力并提高网站响应速度,通常会采用Memcache作为缓存解决方案。Memcache是一种高性能、分布式...
通过Wrapper,Java程序能够像其他Windows服务一样被管理,如启动、停止、设置启动参数等,极大地提升了系统的可管理性和稳定性。 Java Service Wrapper提供了一个名为"wrapper-win-3.5.32"的版本,这表明它是针对...
为了验证Java客户端能成功调用FastDFS,你需要在Java项目中集成FastDFS的Java客户端库,配置相应的连接参数,并进行文件上传、下载等操作测试。 总的来说,安装配置FastDFS涉及下载源码、编译安装、配置多个服务器...
JSPWiki是一款基于Java的开源wiki引擎,它允许用户通过简单的Web浏览器创建和编辑网页,类似于维基百科。这个压缩包文件"jspwiki-2.2.33-src.rar"包含的是JSPWiki的稳定版本v2.2.33的源代码,非常适合开发者进行二次...
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. **创建目录**: 创建一个名...
- 修改 `JENKINS_PORT` 参数值为新的端口号,例如8081: ```bash JENKINS_PORT=8081 ``` **4. 启动Jenkins服务** - 启动Jenkins服务: ```bash service jenkins start ``` #### 三、设置静态IP地址 **1....
3. **非Stable参数**(-XX):不稳定,谨慎使用,如`-XX:NewRatio`设定年轻代与老年代的比例,`-XX:NewSize`和`-XX:MaxNewSize`控制年轻代的初始和最大值,`-XX:PermSize`和`-XX:MaxPermSize`分别设置永久代的初始和...