- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java 6 JVM参数选项大全(中文版)
选项 默认值与限制 描述 -XX:-AllowUserSignalHandlers 限于Linux和Solaris,默认不启用 允许为java进程安装信号处理器。
Java信号处理相关知识,详见 /java-asynchronous-notify-based-on-signal -XX:-DisableExplicitGC 默认不启用 禁止在运行期显式地调用 System.gc()。
?
开启该选项后,GC的触发时机将由Garbage Collector全权掌控。注意:你熟悉的代码里没调用System.gc(),不代表你依赖的框架工具没在使用。
例如RMI就在多数用户毫不知情的情况下,显示地调用GC来防止自身OOM。
请仔细权衡禁用带来的影响。 -XX:-RelaxAccessControlCheck 默认不启用 在Class校验器中,放松对访问控制的检查。
?
作用与reflection里的setAccessible类似。 -XX:-UseConcMarkSweepGC 默认不启用 启用CMS低停顿垃圾收集器。
?
资料详见:/docs/CMS_GC.pdf -XX:-UseParallelGC -server时启用
其他情况下,默认不启用 策略为新生代使用并行清除,年老代使用单线程Mark-Sweep-Compact的垃圾收集器。 -XX:-UseParallelOldGC 默认不启用 策略为老年代和新生代都使用并行清除的垃圾收集器。 -XX:-UseSerialGC -client时启用
其他情况下,默认不启用 使用串行垃圾收集器。 -XX:+UseSplitVerifier java5默认不启用
java6默认启用 使用新的Class类型校验器?。
新Class类型校验器有什么特点?新Class类型校验器,将老的校验步骤拆分成了两步:1,类型推断。2,类型校验。新类型校验器通过在javac编译时嵌入类型信息到bytecode中,省略了类型推断这一步,从而提升了classloader的性能。
?
Classload顺序(供参考)load -?verify?- prepare - resove - init
关联选项:-XX:+FailOverToOldVerifier -XX:+FailOverToOldVerifier Java6新引入选项,默认启用 如果新的Class校验器检查失败,则使用老的校验器。
?
为什么会失败?
因为JDK6最高向下兼容到JDK1.2,而JDK1.2的class info 与JDK6的info存在较大的差异,所以新校验器可能会出现校验失败的情况。
关联选项:-XX:+UseSplitVerifier -XX:+HandlePromotionFailure? ? ? java5以前是默认不启用,java6默认启用 关闭新生代收集担保。
什么是新生代收集担保?在一次理想化的minor gc中,Eden和First Survivor中的活跃对象会被复制到Second Survivor。然而,Second Survivor不一定能容纳下所有从E和F区copy过来的活跃对象。
为了确保minor gc能够顺利完成,GC需要在年老代中额外保留一块足以容纳所有活跃对象的内存空间。这个预留操作,就被称之为新生代收集担保(New Generation Guarantee)。如果预留操作无法完成时,仍会触发major gc(full gc)。为什么要关闭新生代收集担保?因为在年老代中预留的空间大小,是无法精确计算的。
为了确保极端情况的发生,GC参考了最坏情况下的新生代内存占用,即Eden+First Survivor。
这种策略无疑是在浪费年老代内存,从时序角度看,还会提前触发Full GC。
为了避免如上情况的发生,JVM允许开发者手动关闭新生代收集担保。
?
在开启本选项后,minor gc将不再提供新生代收集担保,而是在出现survior或年老代不够用时,抛出promotion failed异常。 -XX:+UseSpinning java1.4.2和1.5需要手动启用, java6默认已启用 启用多线程自旋锁优化。
自旋锁优化原理
大家知道,Java的多线程安全是基于Lock机制实现的,而Lock的性能往往不如人意。原因是,monitorenter与monitorexit这两个控制多线程同步的bytecode原语,是JVM依赖操作系统互斥(mutex)来实现的。互斥是一种会导致线程挂起,并在较短的时间内又必须重新调度回原线程的,较为消耗资源的操作。
为了避免进入OS互斥,Java6的开发者们
文档评论(0)