(图来自于网络)
GC 日志
-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps # GC 日志滚动删除保留 -XX:NumberOfGCLogFiles=16 -XX:GCLogFileSize=30m # 输出停顿原因 -XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1 -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime # -XX:+PerfDisableSharedMem # -XX:AutoBoxCacheMax=2000 # 快速异常抛出 -XX:-OmitStackTraceInFastThrow # 跟踪堆外内存占用 -XX:NativeMemoryTracking==[off|summary|detail] # 关闭偏向锁 -XX:-UseBiasedLocking -XX:+UseGCLogFileRotation -XX:+NumberOfGCLogFiles=10 -XX:+GCLogFileSize=10m -Xloggc:/opt/software/myproject/gc-`date+%Y%m%d.%H%M%S`.log
堆大小
-Xms2G -Xmx2G -Xmn512m -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=512M
垃圾收集器算法
-XX:+UseSerialGC:设置串行收集器 -XX:+UseParallelGC:设置并行收集器 -XX:+UseParalledlOldGC:设置并行年老代收集器 -XX:+UseConcMarkSweepGC:设置并发收集器,搭配 -XX:+ExplicitGCInvokesConcurrent 使用能够提高效率
GC 使用并发线程数
-XX:ParallelGCThreads=4 -XX:ConcGCThreads=2
算法密集型开启多层编译(JDK 8 中,默认是打开的)
-XX:+TieredCompilation
-XX:AutoBoxCacheMax=20000
自旋锁优化
# 开启自旋锁 -XX:+UseSpinning # 自选次数,默认值为 10 -XX:PreBlockSpin
查看 JVM 内存占用情况
在环境中配置 -XX:NativeMemoryTracking==[off|summary|detail] 参数。然后,配合执行:
$ jcmd <pid> VM.native_memory summary
各种垃圾回收算法优缺点
1、Serial(新生代-串行-收集器)
策略:标记-复制-清除;
优点:简单高效,适合Client模式的桌面应用(Eclipse);
缺点:多核环境下,无法充分利用资源;
2、parnew(新生代-并行-收集器)
策略:标记-复制-清除;
优点:多线程、独占式,多核环境下提高CPU利用率;
缺点:单核环境下比Serial效率低;
3、Parallel Scanvenge(新生代-并行-收集器)
策略:标记-复制-清除;
优点:精准控制“吞吐量”、gc时间。吞吐量=执行用户代码时间/(执行用户代码时间+内存回收时间);
配置参数(可通过参数精准调控):
4、Serial Old(老年代-串行-收集器)
策略:标记-清除-整理;
优点:简单高效;
缺点:多核环境下,无法充分利用资源;
5、Parall Old(老年代-并行-收集器)
策略:标记-清除-整理;
优点:多核环境下,提高CPU利用率;
缺点:单核环境下,比Serial Old效率要低;
6、CMS(老年代-并发-收集器);
策略:标记-清除;优点:“停顿时间”最短;
缺点:内存碎片(有补偿策略);
适用场景:互联网Web应用的Server端、涉及用户交互、响应速度快;
7、G1(新生代&老年代-并行&并发-服务端收集器)
策略:G1将内存划分为Region,避免内存碎片;
优点:Eden、Survivor、Tenured不再固定,内存使用率更高;可控的STW时间,根据预期的停顿时间,只回收部分Region;
适应场景:多核CPU,JVM占用内存比较大的情况(>4GB);
最新评论
mat插件可以检测内存数据
标识接口?
序列化serializabel就是一个标识
就差一个MAC了
mark
除了预置sql查询字段,其他我竟然都没用过
可以,这个问题遇到过
mybatis多个参数: 1. 注解(最常用) 2. 转化为对象或MAP 3. 按顺序(这个最蠢,写的代码看得费劲) 单个参数需要注意得: 1.基本数据类型随便写 2.数组用array,l