最近C盘空间比较拮据,话不多说,上图:
偶然间发现一个.\jrebel 居然占用了6.5G空间
点进去才发现原来是jrebel的基本文件夹,而占用最多的是平时使用jrebel热部署生成的一些日志文件。
于是打算将其挪个窝,就跟当初把.IntelliJIdea2018.3.5...
打开官网:才知道可以通过修改idea默认的jvm参数来达到想要的效果。
- 首先新建一个存放位置的文件夹,例如:D:\XXX\jrebel,将原先C盘下的jrebel文件夹拷贝到新建文件夹。
- 在idea的help>edit custom vm options使用配置。(或者idea安装目录IntelliJ IDEA 2018.3.5\bin\idea64.exe.vmoptions)
- 修改参数配置如下:
- 保存并重启idea,大功告成。
文章到这里就结束?不存在,顺便列一下idea 启动配置 vm参数吧:
//常见配置汇总
//堆设置
-Xms:初始堆大小
-Xmx:最大堆大小
-XX:NewSize=n:设置年轻代大小
-XX:NewRatio=n:设置年轻代和年老代的比值.如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值.注意Survivor区有两个.如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
-XX:MaxPermSize=n:设置持久代大小
//收集器设置
-XX:+UseSerialGC:设置串行收集器
-XX:+UseParallelGC:设置并行收集器
-XX:+UseParalledlOldGC:设置并行年老代收集器
-XX:+UseConcMarkSweepGC:设置并发收集器
//垃圾回收统计信息
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename
//并行收集器设置
-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数.并行收集//线程数.
-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间
-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比.公式为1/(1+n)
//并发收集器设置
-XX:+CMSIncrementalMode:设置为增量模式.适用于单CPU情况.
-XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数.并行收集线程数.
-XX:+CMSParallelRemarkEnabled:并发清理
idea2020默认配置
-server
-Xms128m:初始堆大小
-Xmx512m:最大堆大小
-XX:ReservedCodeCacheSize=240m:增加代码缓存的大小
-XX:+UseConcMarkSweepGC:使用CMS内存收集
-XX:SoftRefLRUPolicyMSPerMB=50//每兆堆空闲空间中SoftReference的存活时间
-ea
-XX:CICompilerCount=2//设置最大并行编译数,IDEA要求是2以上,设置1会发生失败
-Dsun.io.useCanonPrefixCache=false//使用性能前缀缓存,java.io.FileSystem class
-Djdk.http.auth.tunneling.disabledSchemes=""//禁止对 HTTPS 隧道执行“基本”验证
-XX:+HeapDumpOnOutOfMemoryError//当JVM发生OOM时,自动生成DUMP文件,可以追踪堆栈信息
//当错误以快速重复的顺序抛出时,Java编译器可以优化堆栈跟踪以提高性能。禁用此优化
-XX:-OmitStackTraceInFastThrow
//在JDK 9中,附加API的实现已更改,减轻与该更改的任何兼容性
-Djdk.attach.allowAttachSelf=true
-Dkotlinx.coroutines.debug=off//Kotlin的Coroutine(协程),no把协程编号打印出来
-Djdk.module.illegalAccess.silent=true
复杂配置
-server
-Xms1g //初始化堆大小
-Xmx2g //最大堆大小
-XX:NewRatio=3 //年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)
-Xss16m //每个线程的堆栈大小
-XX:+UseConcMarkSweepGC //使用CMS内存收集
-XX:+CMSParallelRemarkEnabled //降低标记停顿
-XX:ConcGCThreads=4//设置用于并发GC的线程数
-XX:ReservedCodeCacheSize=240m//代码缓存
-XX:+AlwaysPreTouch//在JVM初始化期间启用对Java堆上每个页面的接触
-XX:+TieredCompilation//禁用分层编译
-XX:+UseCompressedOops//禁用压缩指针的使用
-XX:SoftRefLRUPolicyMSPerMB=50//设置在最后一次引用之后,软可访问对象在堆上保持活动状态的时间(以毫秒为单位)。
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djsse.enableSNIExtension=false
-ea
HBase G1 GC 调优,GC时间缩短为原来的20%左右
JVM 参数,官方指出JVM参数对于负载影响比较小,建议添加参数进行监控。
-XX:+UseG1GC //开启G1GC
-XX:InitiatingHeapOccupancyPercent=70 //当达到heap大小的70%时进行提前启动标记周期进入Mixed GC
-XX:+PrintFlagsFinal
-XX:+PrintReferenceGC //打印GC标识,引用
-XX:+UnlockExperimentalVMOptions
-XX:-ResizePLAB // 取消 内存整理,G1GC 天生优势
-XX:G1NewSizePercent=3 // 3-9每个时代的Eden最小规模,因集群而异
-XX:MaxGCPauseMillis=200 // 期待的最大停留时间,未必满足
-XX:+UnlockDiagnosticVMOptions
-XX:+G1SummarizeConcMark
-XX:+ParallelRefProcEnabled //有助于限制问题所看到的参考处理时间
-XX:+PrintGCDetails
-XX:+PrintAdaptiveSizePolicy // 自适应策略,调节Young Old Size
-XX:G1HeapRegionSize=32M // hbase heap > 32G时
-XX:G1HeapWastePercent=20 //通过增加浪费百分比排除最昂贵的混合GC(默认值为5%)
-XX:ConcGCThreads=8 // 并发标记阶段可以提前完成,以避免完全GC
-XX:ParallelGCThreads=13 // 8+(逻辑处理器 -8)*(5/8)
具体请配置可以参考该文章:链接:https://blog.youkuaiyun.com/privateobject/article/details/105944578