精华内容
下载资源
问答
  • 有时我们会遇到 java.lang.outofmemoryerror 的问题,可能会需要设置jvm运行参数作用-dproperty=value该参数通常用于设置系统级全局变量值,如配置文件路径,保证该属性在程序中任何地方都可访问。当然,也可以通过...

    有时我们会遇到 java.lang.outofmemoryerror 的问题,可能会需要设置jvm运行参数

    作用

    -dproperty=value

    该参数通常用于设置系统级全局变量值,如配置文件路径,保证该属性在程序中任何地方都可访问。当然,也可以通过在程序中使用system.setproperty进行设置。

    注意:

    1、如果-dproperty=value的value中包含空格,可以将value使用引号引起来。例如:-dmyname="hello world"。

    2、如果配置了-dproperty=value参数,又在程序中使用了system.setproperty对同一个变量进行设置,那么以程序中的设置为准。

    针对某个application设置

    1、run-->edit configurations

    8be9e0e69f547d6eedbf88fb75a3ed2f.png

    2、选中要添加jvm参数的application,然后在configuration里面的vm options中输入想要添加的系统参数

    15aa7fb30f752f56bd4ce6e0db20699d.png

    针对所有的application设置

    1、找到idea安装目录中的bin目录

    2、找到idea.exe.vmoptions文件

    3、打开该文件编辑并保存。

    520d6ebfc1d5816517e51692802efc21.png

    优先级关系

    代码中的配置>application中的配置>全局配置

    补充:intellij idea 修改内存大小,运行大项目再也不卡了

    运行大点的项目特别卡?没关系,我们改一下idea的最大占用内存就可以了。

    怎样查看idea内存使用情况呢?

    在 settings -> appearance & behavior 设置窗口中,勾选 show memory indicator 选项,然后主界面右下角会显示 heap 总大小以及使用状况了。

    277d6a7ba0f015a7dec4fef6343d85eb.png

    接下来找到idea*.exe.vmoptions,不同的操作系统,文件名可能会不一样,而且idea同时提供32位和64位的程序打开方式,我经常用的是windows下64位的打开方式,所以,就在idea安装目录(我安装在默认c:\program files\jetbrains\intellij idea 2017.2.3\bin)下找到idea64.exe.vmoptions进行修改

    37e75779d242dc28e5f8cc376bfa6edb.png

    将以下三项改大大大大大大

    6c98628b0e8c386cb02822a9a9422ba6.png

    然后重启idea,迫不及待去看右下角的内存指示器,!!!怎么还是默认的数值?

    82e1201cb1371ef933c22ddf0d64a749.png

    查找一番资料之后,发现vmoptions文件简直是狡兔三窟啊,在idea安装目录下的bin文件夹里,有一个idea.bat文件,在这里面配置了vmoptions文件的位置

    d83bf97d15b7489864ac2e6fa6c97235.png

    找到真正的位置(我的c:\users\pharma\.intellijidea2017.2\config,这个实际路径对应上图红框中带参数的路径),再次进行修改

    e03fd03506931bc2c8fcac05405b0e36.png

    2a4f65086e6c4876f7d8148ca9b8bea9.png

    重启idea,查看右下角内存指示器,当当当当,成功!

    453a7268c21e5a664883e0489b037328.png

    等等!似乎哪里不太对劲!!为什么我设置了最大内存2048,指示器却显示2014?作为强迫症的资深代表,实在不能忍啊!

    算一算差了多少,一七得七,二七四十八,三八妇女节,五一劳动节,六一儿童节... ...

    算了,还是严谨一点,运行calc打开计算器算一算吧

    bf0d112c067607a8835404860d77a6a2.png

    配置文件里再加34m

    09db2ca98c589cd8462e3f3f873fa1c7.png

    重启idea,再次查看右下角内存指示器,变成了完美的2048!

    f6015428f4404cb9f88090835bb859b5.png

    ps:为什么初始内存也要设置1024m那么大?有文章这样说:此值可以设置与-xmx相同,以避免每次垃圾回收完成后jvm重新分配内存。

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持萬仟网。如有错误或未考虑完全的地方,望不吝赐教。

    如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

    展开全文
  • idea设置JVM参数

    千次阅读 2017-10-03 15:10:04
    idea多次热部署出现内存溢出,根源就是jvm运行参数太小,此前分析过过程,这里记录一劳永逸的配置IDEAJVM参数的方法 打开 IDEA 安装目录,看到有一个 bin 目录,其中有两个 vmoptions 文件,需针对不同的...

    idea多次热部署出现内存溢出,根源就是jvm运行参数太小,此前分析过过程,这里记录一劳永逸的配置IDEA的JVM参数的方法


    打开 IDEA 安装目录,看到有一个 bin 目录,其中有两个 vmoptions 文件,需针对不同的JDK进行配置:


    32 位:idea.exe.vmoptions
    64 位:idea64.exe.vmoptions

    那么我的版本的64位默认配置如下:根据需要修改即可

    -Xms128m
    -Xmx750m
    -XX:MaxPermSize=350m
    -XX:ReservedCodeCacheSize=240m
    -XX:+UseConcMarkSweepGC
    -XX:SoftRefLRUPolicyMSPerMB=50
    -ea
    -Dsun.io.useCanonCaches=false
    -Djava.net.preferIPv4Stack=true
    -XX:+HeapDumpOnOutOfMemoryError
    -XX:-OmitStackTraceInFastThrow


    以下收集到的JVM的调优参数作为参考:

    -server:一定要作为第一个参数,在多个CPU时性能佳
    -Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
    -Xmx:Java heap最大值,使用的最大内存
    -XX:PermSize:设定内存的永久保存区域
    -XX:MaxPermSize:设定最大内存的永久保存区域
    -XX:MaxNewSize:
    +XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。
    -Xss:每个线程的Stack大小
    -verbose:gc 现实垃圾收集信息
    -Xloggc:gc.log 指定垃圾收集日志文件
    -Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一
    -XX:+UseParNewGC :缩短minor收集的时间
    -XX:+UseConcMarkSweepGC :缩短major收集的时间

    提示:此选项在Heap Size 比较大而且Major收集时间较长的情况下使用更合适。


    更加详细的JVM参数参考转载文章:

    JVM内存设置详解

    展开全文
  • idea 设置jvm参数

    2019-04-09 12:18:00
    使用IDEA进行JVM参数设置: Run->Edit Configurations... 进入之后: 之后就可以运行代码测试,可以看到控制台打印的信息: 说明: -Xms:20M 初始化堆内存大小 -Xmn:20M 堆内存最大值 -Mmn:10M ...

    使用IDEA进行JVM参数设置:

    Run->Edit Configurations...

    进入之后:

    之后就可以运行代码测试,可以看到控制台打印的信息:

    说明:

    -Xms:20M 初始化堆内存大小

    -Xmn:20M 堆内存最大值

    -Mmn:10M 新生代内存设置

    -XX:+PrintGcDetails 用于打印GC的日志信息

    -verbose:gc 用于查看Java垃圾收集的结果

     

    转载于:https://www.cnblogs.com/kingsonfu/p/10676143.html

    展开全文
  • 顺便通过测试学习一下JVM的几个参数,不过测试是在idea中,所以先要在idea上设置JVM参数。一、idea设置全局的JVM参数一共三步,第一步在菜单栏Help下选择Edit Customer VM Options.......第二步:可以看到选中后的...

    前面学习了JVM的内存分布,今天就来验证下。顺便通过测试学习一下JVM的几个参数,不过测试是在idea中,所以先要在idea上设置JVM参数。

    一、idea设置全局的JVM参数

    一共三步,第一步在菜单栏Help下选择Edit Customer VM Options.......

    27d9ca6821082a32189e8cf4b9371924.png

    第二步:可以看到选中后的参数,然后就可以设置常规参数,设置完成后记得重启idea。如下图:

    994e6dcb2ca0fae00c62ed36a4c857b8.png

    第三步:重启后,查看结果,在idea的最右下角会显示总的和使用的,如果没有显示可以设置显示,如下图,在setting中勾选红色框那个选项,点击应用完成。

    91dba56d13e491b85d3f835e922c9bf3.png

    二、针对应用配置JVM参数

    第一步:选择Run下面的Edit Configurations....

    555917f602e20396f1df761528341528.png

    第二步:选择想配置的应用,然后在右侧的VM options设置JVM参数。

    b0b03f0f2b65fc5646948e654d84d34b.png

    三、JVM内存验证

    又要祭出那张内存分布图了,

    541bc9371d5066a10c4d7b654f0d4e44.png

    如上图,程序计数器不会抛出异常,先不管了,主要是剩下几个的验证。

    1、Java堆验证

    从之前的学习知道,堆里面放的都是对象和数组,主要是对象。首先是控制堆大小的两个参数-Xms(初始堆大小)、-Xmx(最大对大小)。

    测试应用的JVM参数设置:

    -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError

    其中+HeapDumpOnOutOfMemoryError参数可以是内存溢出存储内存快照,可用于分析错误。测试结果如下图:

    e6d439fe35618530b4af804b9f463b1f.png

    红框内就是创建的文件就是内存快照文件,在你的项目的工作目录下,这个是内存溢出前存储的内存情况,可以用专门的工具去分析。这里分享一个在线的分析网站,把Dump文件传上去就可以简单分析下了,网址就不打了,具体如下图:

    388efcc01ec728297822d8bacd98695d.png

    2、虚拟机栈和本地方法栈验证

    HotSpot虚拟机不区分虚拟机栈和本地方法栈(通过java -version可查看是什么虚拟机),所以一起测试了。对应的JVM参数-Xss(每个线程的栈大小)

    我们知道栈里面存的是栈帧,栈帧对应的就是线程的方法,所以只要调用的方法多就可以测试出来,最好的办法就是递归了。

    测试应用的参数配置:

    -Xss128k -XX:+HeapDumpOnOutOfMemoryError

    测试结果如下图:

    b2ac19320deee184409520f1a2a0f337.png

    虚拟机栈之前说过有两种溢出,线程请求的栈深度大于虚拟机允许的深度,将抛出StackOverflowError异常。如果虚拟机栈可以动态扩展,当扩展的时候没有申请到内存的时候抛出OutOfMemoryError。

    这里我们是第一种情况。对于第二种情况,如果在单线程的情况下栈去动态扩展导致内存不足,那么应该也是属于栈不能申请到更多空间,所以是栈溢出,可以明显看出来OutOfMemoryError和StackOverflowError存在包含关系。如果在多个线程下。每个线程的栈都在扩展内存,就会耗光物理内存而造成了OutOfMemoryError

    一个机器的内存是有限的。建立过多线程导致的内存溢出。如果不能减少线程,那么可以通过减少堆和减少栈容量来换取更多线程。这部分可以深入讨论,主要讨论各个模块的关系,和各自的限制。

    3、方法区验证

    方法区中主要存储被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码。所以我们平时遇到的这类异常一般都是加载的类太多,比如spring这类的框架都会对类进行增强,都会使用到CGLib这类字节码技术,增强的类越多,就需要越大的方法区来保证动态生态的Class可以加载入内存。

    jdk8的方法区变成了元空间,使用的是直接内存。所以和jdk7使用的参数不一样具体参数如下:

    jdk7:-XX:PermSize=10m -XX:MaxPermSize=10m

    jdk8:-XX:MetaspaceSize=10m -XX:MaxMetaspaceSize=10m

    结果如下图:

    474136545a37fe931171a88def52f560.png
    bf77fdf67d15212f0ee1800179d7e5a6.png

    jdk8的异常更加明显,明确表明是了元空间内存溢出。

    4、直接内存验证

    直接内存如果不设置和-Xmx(堆最大)一样。可通过参数-XX:MaxDirectMemorySize来设置直接内存。直接内存一般和NIO有关,DirectByteBuffer中通过Unsafe去操作的直接内存,DirectByteBuffer是通过计算知道内存不足抛出的异常,unsafe.allocateMemory()才是去申请内存的方法。测试代码如下图:

    测试参数:-Xms20m -XX:MaxDirectMemorySize=10m

    48000c0bf7ae211ac1d3ac2d08baa00d.png

    直接内存的溢出比较简单,dump文件也比较小。如果发现内存溢出也没有明显异常,dump文件比较小,那么就应该想到可以能直接内存溢出,是不是程序中使用了NIO的原因。

    四、总结

    学习了几个常用JVM参数,总结如下

    cdbe462613d8be7a76d4137be8ee01af.png

    OutOfMemoryError简称OOM,学习了几个基本的内存溢出后,对以后才能有更好的帮助。工作中遇到了内存溢出时,能根据异常信息来判断是那个区域的内存溢出,也知道什么样的代码可能会造成这些区域会出现内存溢出,并且知道一些处理手段。

    Java程序员日常学习笔记,如理解有误欢迎各位交流讨论!

    9cc112e4b331cc48f5da25753f2517e1.png
    展开全文
  • idea中设置JVM参数,简单理解JVM常见参数,JVM调优简单入门前面学习了JVM的内存分布,今天就来验证下。顺便通过测试学习一下JVM的几个参数,不过测试是在idea中,所以先要在idea上设置JVM参数。一、idea设置全局的...
  • 有时我们会遇到java.lang.OutOfMemoryError 的问题,可能会需要设置jvm运行参数 作用 -Dproperty=Value 该参数通常用于设置系统级全局变量值,如配置文件路径,保证该属性在程序中任何地方都可访问。当然,也可以...
  • 前面学习了JVM的内存分布,今天就来验证下。顺便通过测试学习一下JVM的几个参数,不过测试是在idea中,所以先要在idea设置JVM参数
  • 在tomcate设置里 VM options 添加内容: -Xmx512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError
  • IDEA-参数设置 项目JVM内存调整

    千次阅读 2019-01-16 18:15:55
    idea 的右下角有当前内存和总内存的占比 不显示的话需要勾选如下 ​​​​​​ 那么这个750是怎么设置的呢?让我们打开访达,找到idea 打开如下文件 # 文件内容如下,我们看到配置里有750,如果默认值...
  • IDEAJVM参数设置

    2021-04-02 10:08:56
    常用配置: ...-Xmx:设置内存Heap最大值(运行期间最大内存),超出了这个设置值,就会抛出OutOfMemory异常。 <内存取决于硬件物理内存的大小,建议-Xms与-Xmx都设置为物理内存的1/2> -Xss:设置
  • #设置最大堆内存,相同大小可避免扩容 -Xms800m -Xmx800m # 年轻代大小,Sun推荐设置为堆大小的3/8 -Xmn281m #开启项目后不检测字节码正确性 #禁用字节码验证。IDEA的代码足够可靠, -Xverify:none # 对象晋升到...
  • IdeaJvm参数设置 VM options

    万次阅读 2019-04-13 23:00:48
    分布式项目启动项目有点多,导致系统内存不够用,需要调整一下idea中每个模块的内存的大小 -Xms64m -Xmx128m -Dfile.encoding=UTF-8 一下的参数就不要添加了,java8不支持了 -XX:PermSize=64m -XX:...
  • [Java进阶]-- 修改ideajvm参数

    万次阅读 2017-05-31 17:19:44
    设置JVM内存参数有四个: -Xmx Java Heap最大值,默认为物理内存的四分之一 -Xms Java Heap初始值,最好将-Xmx和-Xms设置为相同值,避免垃圾回收时由于差值造成时间开销增大 -Xmn Java Heap Young区大小,最好...
  • idea jvm参数配置

    2020-10-22 20:27:23
    idea jvm参数配置 在idea安装bin目录下的vmoption文件上修改; idea怎么设置内存
  • 原因 今天在启动工作代码时,由于是springcloud,需要启动多个微服务。导致系统运行内存占用过大。 办法 方法一 在上面红色框内填写自己的JVM设置 方法二
  • IDEA修改maven的JVM启动内存参数

    千次阅读 2019-12-09 22:01:27
    有两处地方: 1.设置maven的: file --> setting -->...设置idea自己的: file --> setting -->compiler 一般情况设置2048即可,看自己项目点需求吧。如有错误希望指出,不胜感激! ...
  • idea如何增加jvm内存

    千次阅读 2019-05-22 08:47:20
    设置以下参数-server -XX:PermSize=128M -XX:MaxPermSize=256m,可根据实际情况进行调整 方法二: https://jingyan.baidu.com/article/90895e0fd5e03564ec6b0b07.html 参数作用解释 -XX:Paralle...
  • idea修改tomcat jvm参数

    千次阅读 2019-08-21 15:13:31
    原文:... 设置JVM初始堆空间为512m -Xms512m 设置年轻代为768m(为堆内存的3/8) -Xmn768m 设置JVM最大堆内存为2g -Xmx2g -XX:ReservedCodeCacheSize=240m -XX:MaxMetaspaceSize...
  • JVM运行参数

    2019-05-13 23:24:27
    设置JVM运行参数1.idea设置JVM启动参数2.设置JVM运行参数3.JVM内存区域划分4.JVM启动参数详解 1.idea设置JVM启动参数 三种设置方式: 修改配置文件(全局配置,优先级低) idea安装目录下, bin 目录,其中有两个 ...
  • idea设置maven的jvm参数

    万次阅读 2018-01-25 22:17:05
    在编译spark源码的过程中总是在编译spark-core模块时报内存溢出错误, 通过visualvm监控,发现编译时maven的堆内存最大只有268m左右,于是网上搜了一些方法增加maven启动时的堆内存,主要是修改MAVEN_OPTS, 1. ...
  • IntelliJ设置JVM参数

    2019-09-17 11:42:33
    安装目录\bin\idea64.exe.vmoptions,在此文件中直接修改整个配置参数 -Xms4096m #JVM初始内存 -Xmx12288m #JVM最大可用内存 -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=...
  • jvm堆空间参数设置 官网说明: 官网 -XX:+PrintFlagsInitial :查看所有的参数的默认初始值 -XX:+PrintFlagsFinal :查看所有的参数的最终值(可能会存在修改,不再是初始值) -Xms:初始堆空间内存(默认为物理内存的1...
  • Idea配置JVM视图

    2021-01-29 15:40:17
    前言 这次我们在Idea中配置GC视图 首先打开Idea,点击setting——>Plugins——>...里面包含了程序运行的堆内存信息和GC信息,当然我们也可以设置JVM参数后再进行测试,更多的内容需要你们自己去实验啦 ...
  • JVM参数设置入门

    2020-05-21 20:38:10
    IDEA设置过程: Run-> Edit Configurations -> Vm options -> -Xms1024m -Xmx1024m -XX:+PrintGCDetails -Xms 设置初始内存大小,默认为物理内存的1/64 -Xmx 设置最大内存大小,默认为物理内存的1/4 -XX:+...
  • 我有一些Junit单元测试,需要大量的堆空间才能运行-即1G。...)我正在Intellij IDEA中进行开发,因此我知道可以为测试类设置JVM参数(例如-Xmx1024M)。但是,这仅用于运行整个测试类-如果我想运行单个测试,...
  • 快吃下这颗JVM十全大补丸,妈妈再也...首先在IDEA设置打印GC的参数,比如我设置参数如下,堆、新生代老年代都设置的比较小,这样比如容易出GC日志。-Xms56m -Xmx56m -Xmn21m -Xss512k -XX:Met
  • 1.Idea中修改JVM内存大小 1.选择启动类 选择Edit configuration 2在VM option修改JVM参数 2.windows下修改tomcat JVM内存大小 1. 通过startup.bat启动tomcat Windows直接打开Tomcat根目录下的bin文件夹,编辑...
  • 在开发当中,idea默认服务启动要占用1G内存。其实每个项目本地开发和调试的时候,根本不需要1G内存,200M左右足以。 这样可以在本机内存有限的情况下,用最小的内存,启动开发调试项目。 如果在微服务体系下,那...
  • idea参数设置选项 一般最小堆内存设置512m-1024就可以了 最大堆内存设置2048m就ok了 代码容量设置480m就可以了 idea默认设置的收集器是cms...jvm参数设置 -xmn设置年轻代的内存大小 -xss设置线程内存大小 ...

空空如也

空空如也

1 2 3 4 5
收藏数 95
精华内容 38
关键字:

idea设置jvm内存参数