idea中的jvm调优方式

 更新时间:2023年12月18日 09:15:34   作者:人工博客  
这篇文章主要介绍了idea中的jvm调优方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1、背景

idea作为一个高频使用的java IDE。

性能的好坏,影响着开发的心情。

工欲善其事必先利其器。

2、优化后的参数

优化后的感觉是拙匠常怪工具差

明明可以流畅的编码,为啥之前选择的是默默忍受,不去改变。

真的是流畅了很多。

当前电脑的配置是 windows i5 8核16G

# custom IntelliJ IDEA VM options

# 堆大小,按常规操作,设成相同的,避免自动扩容
-Xms1536m
-Xmx1536m
# 年轻代大小,Sun推荐设置为堆大小的3/8
-Xmn576m
# 在JVM启动时即预初始化堆中的所有页,能够快速利用
-XX:+AlwaysPreTouch

# 设置一个较大的元空间初始值,避免频繁GC扩容
-XX:MetaspaceSize=256m
# 元空间最大默认不限制,设一个值保护一下
-XX:MaxMetaspaceSize=768m

# 启用G1 GC
# -XX:+UseG1GC

# 启用CMS GC
-XX:+UseConcMarkSweepGC
# CMS并行标记,降低标记阶段停顿时间
-XX:+CMSParallelRemarkEnabled
# 重新标记前先执行一次新生代GC
-XX:+CMSScavengeBeforeRemark
# 触发CMS GC的堆内存占用比例,调大点以降低GC频率
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly

# 对象晋升到老年代的年龄,默认15。根据观察,对IDEA来说设成10就足够了
-XX:MaxTenuringThreshold=10

# 压缩普通对象指针
-XX:+UseCompressedOops

# 指定服务器版JIT编译器,其实不用写,默认已经是了
-server
# JIT代码缓存的大小,默认是240M
-XX:ReservedCodeCacheSize=360M
# 打开JIT分层编译,默认是开启的了
-XX:+TieredCompilation
# 每MB堆空间中的软引用能够存活的近似毫秒数
-XX:SoftRefLRUPolicyMSPerMB=50

# OOM时输出堆dump转储文件
-XX:+HeapDumpOnOutOfMemoryError
# 禁止把某些异常的stack trace优化掉,防止信息被吃了找不到问题
-XX:-OmitStackTraceInFastThrow
# 禁用字节码验证。IDEA的代码足够可靠,不用验证
-Xverify:none
# 启用断言机制(enable assertion)
-ea

-Dfile.encoding=UTF-8
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djdk.http.auth.tunneling.disabledSchemes=""

-XX:ErrorFile=$USER_HOME/java_error_in_idea_%p.log
-XX:HeapDumpPath=$USER_HOME/java_error_in_idea.hprof
-javaagent:D:\software\JetBrains\IntelliJ IDEA 2019.2\bin\jetbrains-agent.jar

3、cutom vm options和idea.exe.vmoptions的区别

  • idea.exe.vmoptions是开发工具自带的,不建议修改,因为升级的时候会进行覆盖
  • cutom vm options是用户自定义的,是留给使用者个性化配置的。默认保存在用户目录下的 .IntelliJIdea2019.2/config
  • 实际操作是idea.exe.vmoptions是全局的配置,cutom vm options会对定义的配置进行覆盖

4、修改配置后无法启动

报错的信息如下:

MaxJavaStackTraceDepth=-1 is outside the allowed range,本质是配置文件的格式不正确或包含了不能被识别的属性。

实际上的 -XX:+UseParNewGC:设置年轻代为多线程收集 这个属性被废弃了。

jdk10以上UseParNewGC被废弃了

idea自带的jdk是jdk11,所以是不包含这个属性的。

与表象是一致的。

idea自带的jdk是jdk11

idea jvm调优,MaxJavaStackTraceDepth=-1 is outside the allowed range

还在使用idea的默认jvm参数吗?那么是时候动手优化一下你的idea了,体验一下飞一般的感觉。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解spring boot Websocket使用笔记

    详解spring boot Websocket使用笔记

    本篇文章主要介绍spring boot Websocket使用笔记,在springboot项目中使用websocket做推送,这里整理了详细的代码,有需要的小伙伴可以参考下。
    2017-03-03
  • Java正则验证IP的方法实例分析【测试可用】

    Java正则验证IP的方法实例分析【测试可用】

    这篇文章主要介绍了Java正则验证IP的方法,结合实例形式对比分析了网上常见的几种针对IP的正则验证方法,最终给出了一个比较靠谱的IP正则验证表达式,需要的朋友可以参考下
    2017-08-08
  • 手把手教你搞懂冒泡排序和选择排序

    手把手教你搞懂冒泡排序和选择排序

    这篇文章主要介绍了java数组算法例题代码详解(冒泡排序,选择排序),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • springboot项目启动自动跳转到浏览器的操作代码

    springboot项目启动自动跳转到浏览器的操作代码

    这篇文章主要介绍了springboot项目启动自动跳转到浏览器的操作代码,本文图文实例代码相结合给大家介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • 简单说说JVM堆区的相关知识

    简单说说JVM堆区的相关知识

    今天给大家带来的是关于Java虚拟机的相关知识,文章围绕着JVM堆区展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Java数据结构之集合框架与常用算法详解

    Java数据结构之集合框架与常用算法详解

    Java集合框架是Java中常用的数据结构库,包括List、Set、Map等多种数据结构,支持快速的元素添加、删除、查找等操作,可以用于解决各种实际问题。Java中也有多种常用算法,如排序、查找、递归等,在数据处理和分析中有广泛应用
    2023-04-04
  • Java序列化之serialVersionUID的用法解读

    Java序列化之serialVersionUID的用法解读

    Java序列化之serialVersionUID:本文介绍了Java对象的序列化和反序列化过程,强调了serialVersionUID的作用,以及如何生成和使用它来保证版本兼容性,通过实例代码,展示了序列化和反序列化的具体操作
    2025-11-11
  • SpringBoot整合canal实现数据缓存一致性解决方案

    SpringBoot整合canal实现数据缓存一致性解决方案

    canal主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费,canal是借助于MySQL主从复制原理实现,本文将给大家介绍SpringBoot整合canal实现数据缓存一致性解决方案,需要的朋友可以参考下
    2024-03-03
  • springboot 使用Spring Boot Actuator监控应用小结

    springboot 使用Spring Boot Actuator监控应用小结

    本篇文章主要介绍了springboot 使用Spring Boot Actuator监控应用小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Java代码重用之功能与上下文重用

    Java代码重用之功能与上下文重用

    代码重用通常使得程序开发更加快速,并使得 BUG 减少。一旦一段代码被封装和重用,那么只需要检查很少的一段代码即可确保程序的正确性。接下来通过本文给大家介绍Java代码重用之功能与上下文重用的相关知识,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-05-05

最新评论