开发工具:
文件大小: 1mb
下载次数: 0
上传时间: 2019-07-03
详细说明:
NULL
博文链接:https://milk-36.iteye.com/blog/678231为了避免进入OS互斥,Java6的开发者们提出了自旋
锁优化。
自旋锁优化的原理是在线程进入OS互斥前通过CAS
自旋一定的次数来检测锁的释放
如果在自旋次数未达到预硕设值前锁已被释放则当前线
程会立即持有该锁。
CAS检测锁的原理详
n:http://kenwublog.com/theory-of-lightweight-
locking-upon-cas
关联选项
XX: Pre block Spin =10
XX: Pre Block Spin=10X+ UseSpi控制多线程自旋锁优化的自旋次数。(什么是自旋锁优
nnIng必须化?见-x:+ UseSpinning处的描述)
先启用,对
java6来说已关联选项
经默认启用X+ Use spinning
了,这里默认
自旋10次
XX+ Scavenge BeforeFu默认启用在FⅷGC前触发一次 Minor gc
IIGO
XX+ UsegCOverheadli默认启用限制GC的运行时间。如果GC耗时过长,就抛OOM
mit
XX+ UsetLAB
122以前和启用线程本地缓存区( Thread local)
使用- client选
项时,默认不
启用,其余版
本默认启用
XX:+ UseThread Prioritie默认启用使用本地线程的优先级。
-XX: +UseAltsigs
限于 Solaris,为了防止与其他发送信号的应用程序冲突允许使用候
默认启用补信号替代 SIGUSR1和 SIGUSR2。
限于 Solaris,绑定所有的用户线程到內核线程。
XX+ Use Bound threads默认启用减少线程进入饥饿状态(得不到任何 cpu time)的次
数
XX:+ UselWPsynchroni限于 solaris
zation
默认启用
′使用轻量级进程(内核线程)替换线程同步
XX,+ MaxFDLimit
狠于 Solaris,设置java进程可用文件描述符为操作系统允许的最大
默认启用值
Xx+ UseVMInterruptibl限于 solaris,在sori中,允许运行时中断线程。
elo
默认启用
性能选项
选项与默认值
默认值描述
与限制
XX: AggressiveOpts
JDK5启用M开发团队最新的调优成果。例如编译优化
update偏向锁,并行年老代收集等。
6后弓
入但需
要手动
JDK6默
认启用
XX: Compile threshold=1000100通过丌编译器,将方法编译成机器码的触发闯值,可
以理解为调用方法的次数,例如调1000次,将方法编
译为机器码。
XX LargePageSizelnBytes=4默认设置堆内存的内存页大小
amd64调整内存页的方法和性能提升原理,详
fa:2mnhttp:/kenwublog.com/tune-large-page-for-jv
m-optimization
- XX: MaxHeapFree Ratio=7070GC后,如果发现空闲维内存占到整个预估上限值的
70%,则收缩预估上限值
什么是预估上限值?
JM在启动时,会申请最大值(-Xmx指定的数值)的
地址空间,但其中绝大部分空间不会被立即分配
(virtuaL)
它们会一直保留着,直到运行过程中,丿M发现实际
占用接近已分配上限值时,才从 virtual里再分配掉一
部分内存
这里提到的已分配上限值,也可以叫做预估上限值。
引入预估上限值的好处是,可以有效地控制堆的大小。
堆越小,GC效率越高嘛。
注意:预估上限值的大小一定小于或等于最大值
XX. MaxNewsize=size1.31新生代占整个堆内存的最大值
Sparc
32m
3
x86
25r
-XX: MaxPermSize=64m
50以Perm(俗称方法区)占整个堆内存的最大值
后:64
it
Ms会
增大预
设值的
30%
amd64
96m
3.1
client:
32m
其他默
认
24m
- XX MinHeapFreeRatio=4040Gc后,如果发现空闲内存占到整个预估上限值的
40%,则增大上限值。
什么是预估上限值?见- XX MaxHeapFreeRatio处
的描述)
关联选项:
XX. MaxHeap FreeRatio=70
XX. NewRatio=2
parc新生代和年老代的堆内存占用比例
client:例如2表示新生代占最大堆内存的12,即年老代和新
8
生代平分堆的占用。
86
server
8
86
client:
client:
8
(131+
86:12
其他默
认2
XX NewSize=2.125m
50以新生代预估上限的默认值。(什么是预估上限值?见
后64 XX: MaxHeap FreeRatio处的描述)
Vms
增大
预设值
的30
86
86
0以
后
640k
其他默
2125
XX ReservedCode CacheSize solaris设置代码缓存的最大值,编译时用
64-bit
amd 64
server
86:
48m
1500
6之前,
Solaris
64-bit
amd64
1024m
其他默
认
32
XX: Survivor Ratio=8
Solaris eden与 Survivor的占用比例。例如8表示,
amnd64 survivor区占用1/8的新生代内存,另外因为有2个
survivor
spac所以 survivor总共是占用新生代内存的2/8,Eden的
占比则为6/8。
1.3.1:
25
Solaris
ato
ms5,0
以前:
32
其他默
认8
XX: TargetSurvivor Ratio=5050实际使用的 survivor:空间大小占比。默认是50%,最
高90%
XX: Thread Stack size=512 sparc:线程堆栈大小
512
Solaris
x86
20
(50以
256)
Sparc
64 bit
1024
md64
1024
(50以
前0
其他默
认512
XX: Use BiasedLocking DK5启用偏向锁。
pdate
6后引偏向锁原理详
入但需见http://kenwublog.com/theory-of-java-biased-
要于动 locking
启用。
JDK6默
认启用
-XX+ UseFastAccessorMetho默认启优化原始类型的getr方法性能。
用
XX - UseISM
默认启启用 solaris的ISM。
用
详见 Intimate Shared Memory
-XX:+UseLargePages
JDK5启用大内存分页。
update
5后引调整内存页的方法和性能提升原理,详
入但需见http://kenwublog.com/tune-large-page-for-jv
要手动 m-optimization
启用
JDK6默关联选项
人启用。 XX. LargePageSizelnBytes=4m
XX+UseMPSS
141启用 solaris的MPSS,不能与ISM同时使用。
之前
不启用
其余版
本默认
启用
XX: String Cache
默认启启用字符串缓存
用
XXA| locate PrefetchLines11与机器码指令预读相关的一个选项,资料比较少,本文
挡不做解释。有兴趣的朋友请自行阅读官方doC。
XX: Allocate PrefetchStyle=1 1
与机器码指令预读相关的一个选项,资料比较少,本文
栏不做解释。有兴趣的朋友请自行阅读官方doc。
调试选项
选项与默认值
默认描述
值与
限制
XX. -CTIme
14引打印丌编译器编译耗时.
默认
启用
XX: ErrorFile=, hs_err_pid.log
6引
XX:- ExtendedDTrace Probe Java6启用 dtrace诊断。
引入
限于
lari
s
默认
不启
用
XX HeapDumpPath=java默认堆内存快照的存储文件路径。
pid< pid> hprof
ava什么是堆内存快照?
进程当java进程因OOM或 crash被OS强制终止后,会生成
启动个 hprof( Heap PROFling)格式的堆内存快照文件。该
位置,文件用于线下调试,诊断,查找问题
即文件名一般为
user. java___
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.