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了,体验一下飞一般的感觉。

总结

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

相关文章

  • Springboot访问html页面的教程详解

    Springboot访问html页面的教程详解

    这篇文章主要介绍了Springboot访问html页面的教程,本文图文并茂给大家介绍的非常详细,需要的朋友可以参考下
    2018-03-03
  • string boot 与 自定义interceptor的实例讲解

    string boot 与 自定义interceptor的实例讲解

    下面小编就为大家分享一篇string boot 与 自定义interceptor的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • Java中的CGLIB动态代理的使用及原理详解

    Java中的CGLIB动态代理的使用及原理详解

    这篇文章主要介绍了Java中的CGLIB动态代理的使用及原理详解,CGLIB是一个功能强大,高性能的代码生成包,它为没有实现接口的类提供代理,为JDK的动态代理提供了很好的补充,需要的朋友可以参考下
    2023-09-09
  • Spring Boot 员工管理系统超详细教程(源码分享)

    Spring Boot 员工管理系统超详细教程(源码分享)

    这篇文章主要介绍了Spring Boot 员工管理系统超详细教程(源码分享),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • Mybatis-Spring连接mysql 8.0配置步骤出错的解决方法

    Mybatis-Spring连接mysql 8.0配置步骤出错的解决方法

    这篇文章主要为大家详细介绍了Mybatis-Spring连接mysql 8.0配置步骤出错的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • Java秒杀系统:web层详解

    Java秒杀系统:web层详解

    本文主要介绍了如何设计一个秒杀系统的web层相关知识。具有很好的参考价值。下面跟着小编一起来看下吧,希望能够给你带来帮助
    2021-10-10
  • Java中JDom解析XML_动力节点Java学院整理

    Java中JDom解析XML_动力节点Java学院整理

    JDOM是一种解析XML的Java工具包。DOM适合于当今流行的各种语言,包括Java,JavaScripte,VB,VBScript,Perl,C,C++等。下面通过本文给大家介绍Java中JDom解析XML的方法,感兴趣的朋友一起学习吧
    2017-07-07
  • Java反射和动态代理的使用解读

    Java反射和动态代理的使用解读

    这篇文章主要介绍了Java反射和动态代理的概念、使用方法和应用场景,反射允许在运行时动态地获取类的信息和调用类的方法,而动态代理则可以在不修改原有代码的情况下,为方法调用添加额外的功能
    2025-02-02
  • SpringCloud之@FeignClient()注解的使用详解

    SpringCloud之@FeignClient()注解的使用详解

    @FeignClient是SpringCloud中用于声明一个Feign客户端的注解,用于解决模块方法互相调用的问题,Feign是一个声明式的WebService客户端,通过Feign,只需要创建一个接口,并使用注解来描述请求,就可以直接执行HTTP请求了
    2024-11-11
  • Springboot使用thymeleaf动态模板实现刷新

    Springboot使用thymeleaf动态模板实现刷新

    这篇文章主要介绍了Springboot使用thymeleaf动态模板实现刷新,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08

最新评论