首页 > 其他分享 >IDEA中VM options参数设置和说明

IDEA中VM options参数设置和说明

时间:2024-10-11 11:01:38浏览次数:11  
标签:JVM Spring IDEA XX 内存 设置 大小 options 参数设置

IDEA中VM options参数设置和说明

一、VM options参数设置

打开Run Configurations界面 

二、VM options参数说明 

-Xms1024m,设置JVM初始堆内存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xmx1024m,设置JVM最大堆内存为1024m。
-Xss512k,设置每个线程的栈大小。JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K。在相同物理内存下,减小这个值能生成更多的线程,当然操作系统对一个进程内的线程数还是有限制的,不能无限生成。线程栈的大小是个双刃剑,如果设置过小,可能会出现栈溢出,特别是在该线程内有递归、大的循环时出现溢出的可能性更大,如果该值设置过大,就有影响到创建栈的数量,如果是多线程的应用,就会出现内存溢出的错误。
-Xmn341m,设置年轻代大小为341m。在整个堆内存大小确定的情况下,增大年轻代将会减小年老代,反之亦然。此值关系到JVM垃圾回收,对系统性能影响较大,官方推荐配置为整个堆大小的3/8。
-XX:NewSize=341m,设置年轻代初始值为341M。
-XX:MaxNewSize=341m,设置年轻代最大值为341M。
-XX:PermSize=512m,设置持久代初始值为512M,但在java8及之后就不支持了,改用-XX:MetaspaceSize=512m。
-XX:MaxPermSize=512m,设置持久代最大值为512M,同样在java8及之后就不支持了,改用-XX:MaxMetaspaceSize=512m。
-XX:NewRatio=2,设置年轻代(包括1个Eden和2个Survivor区)与年老代的比值。表示年轻代比年老代为1:2。
-XX:SurvivorRatio=8,设置年轻代中Eden区与Survivor区的比值。表示2个Survivor区(JVM堆内存年轻代中默认有2个大小相等的Survivor区)与1个Eden区的比值为1:1:8,即1个Survivor区占整个年轻代大小的1/10。
-XX:MaxTenuringThreshold=15,具体参看JVM系列之内存分配和回收策略中对象的衰老过程。
-XX:ReservedCodeCacheSize=240m,设置代码缓存的大小,用来存储已编译方法生成的本地代码。
-client,设置JVM使用Client模式,特点是启动速度比较快,但运行时性能和内存管理效率不高,通常用于客户端应用程序或开发调试;在32位环境下直接运行Java程序默认启用该模式。
-server,设置JVM使Server模式,特点是启动速度比较慢,但运行时性能和内存管理效率很高,适用于生产环境。在具有64位能力的JDK环境下默认启用该模式。
-Dserver.port=8088,设置服务端口为8088

 -X这些参数基本上都是JVM参数,部分补充说明可以参看JVM系列之分代内存模型以及常用参数的查看和设置

三、启动Spring Boot时,如果不设置内存参数会如何?

3.1前言

最近正在进行从Spring Boot往Spring Cloud上改造升级。之前部署的应用程序比较少,还没什么问题。当Spring Cloud项目逐步新增之后,问题就爆发了,服务器内存不够用了。而现有的用户体量也没必要对服务器再次进行升级,于是就开始着手Spring Boot启动时JVM内存配置的优化。

3.2服务现状

由于之前服务比较少,服务器资源充足,许多服务启动时都未添加JVM参数(遗留问题)。结果就是每个服务启动都占用了1.5G-2G的内存,有些服务的体量根本用不了这么多。那么,在Spring Boot中如果未设置JVM内存参数时,JVM内存是如何配置的呢?

3.3JVM默认内存设置

当运行一个Spring Boot项目时,如果未设置JVM内存参数,Spring Boot默认会采用JVM自身默认的配置策略。

Spring Boot项目的JVM默认堆大小取决于使用的JDK版本。对于JDK 8和之前的版本,JVM的初始堆大小为1/64,最大堆大小为1/4。对于JDK 9及以上版本,默认情况下JVM启动时使用的Ergonomics配置将自动根据可用系统内存进行调整。

3.3.1对于JDK 8和之前的版本,可以在启动命令中通过设置-Xms和-Xmx参数来指定JVM的初始堆大小和最大堆大小。例如:

java -Xms512m -Xmx1024m -jar myapp.jar

上述命令指定了JVM的初始堆大小为512MB,最大堆大小为1024MB。切记参数要防止-jar参数之前。否则会被当做系统参数而无效。

3.3.2对于JDK 9及以上版本,可以通过设置以下参数来调整JVM的堆大小:

-Xms:设置JVM的初始堆大小
-Xmx:设置JVM的最大堆大小
-XX:MaxMetaspaceSize:设置元空间(Metaspace)大小,用于存储类元数据信息

java -Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m -jar myapp.jar

上述命令指定了JVM的初始堆大小为512MB,最大堆大小为1024MB,元空间大小为256MB。 

针对最开始的问题,如果每个程序都按照默认配置启动,一台服务器上部署多个应用时,就会出现内存吃紧的情况,造成一定的浪费。最简单的操作就是在执行java -jar启动时添加上对应的jvm内存设置参数。

3.4查看系统默认内存设置

通过上面的描述我们可以看到,不同的系统配置,JVM使用的内存是不同的。我们可以通过Java命令自带的功能来查看默认的内存设置。

在Windows操作系统下,输入如下命令:

java -XX:+PrintFlagsFinal -version | findstr HeapSize

在Linux操作系统下,输入如下命令:

java -XX:+PrintFlagsFinal -version | grep HeapSize

四、springboot项目启动需要多大内存?

SpringBoot项目的内存需求取决于多个因素,包括项目的复杂性、使用的依赖和插件的数量、以及预期的并发用户数量。但是,对于大多数基本的SpringBoot应用程序,通常建议为JVM(Java虚拟机)分配至少512MB的内存。

原文链接:https://gitcode.csdn.net/66c556c39a494d224f74879d.html?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6Mjg1NzA5NCwiZXhwIjoxNzI5MTUwNjA4LCJpYXQiOjE3Mjg1NDU4MDgsInVzZXJuYW1lIjoid3Vrb25nMzE1OCJ9.3hEF4NyPsaGDjYBvMCtmPXFxdjFLPHpT1FGfwALrWOc&spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7Ebaidujs_baidulandingword%7Eactivity-1-138036540-blog-131857964.235%5Ev43%5Epc_blog_bottom_relevance_base3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7Ebaidujs_baidulandingword%7Eactivity-1-138036540-blog-131857964.235%5Ev43%5Epc_blog_bottom_relevance_base3&utm_relevant_index=2

标签:JVM,Spring,IDEA,XX,内存,设置,大小,options,参数设置
From: https://www.cnblogs.com/sunny3158/p/18457988

相关文章

  • idea数据库图形化窗口连接数据库报错:Driver class ‘com.mysql.cj.jdbc.Driver‘ not
    报错信息在idea中数据库图形化窗口中,创建下图数据库连接点击测试连接后,发生报错:Driverclass'com.mysql.cj.jdbc.Driver'notfoundNodriverfilesprovided.报错界面:原因出现此错误的原因通常是数据库驱动程序尚未下载或未正确配置到IDEA中。解决方案......
  • tensorflow快速入门--如何定义张量、定义网络结构、超参数设置、模型训练???
    前言由于最近学习的东西涉及到tensorflow的使用,故先简单的学习了一下tensorflow中如何定义张量、定义网络结构、超参数设置、模型训练的API调用过程;欢迎大家,收藏+关注,本人将持续更新。文章目录1、基本操作1、张量基础操作创建0维度张量创建1维张量创建多维张量2、转换......
  • 【Ubuntu】在Ubuntu上安装IDEA
    【Ubuntu】在Ubuntu上安装IDEA零、前言最近换了Ubuntu系统,但是还得是要写代码,这样就不可避免地用到IDEA,接下来介绍一下如何在Ubuntu上安装IDEA。壹、下载这一步应该很容易的,直接打开IDEA的下载页面,点击下载即可开始下载:https://www.jetbrains.com.cn/idea/download/?section=l......
  • 2024你必须要掌握的Idea使用技巧和快捷键
    Hello,大家好,我是Feri,一枚十多年的程序员,同时也是一名在读研究生,关注我,且看一个平凡的程序员如何在自我成长,CodingSir是我想打造一个编程社区,只为各位小伙伴提供编程相关干货知识,希望在自我蜕变的路上,我们一起努力,努力什么时候开始都不晚,我,从现在开始做起!一、前言Hello,大家......
  • IDEA如何设置成Eclipse的快捷键
    前言对于Java开发人员来说,IDEA可以说是比较好的开发神器了,不过对于一些老程序员来说,可能一开始使用的是Eclipse,对于Eclipse的快捷键用得比较熟练,但对于IDEA的快捷键却不那么熟悉。其实,针对这个问题,IDEA已经有相关的设置可以进行修改。那么,我们呢怎么操作呢?如何设置首先,我们点......
  • idea常用配置
    1、IDEA安装插件##idea插件.envfilessupport.ignoreAlibabaJavaCodingGuidelinesBeanMappingKeyCamelCaseCheckStyle-IDEACodeGlanceProConvertYAMLandPropertiesFileDarculaDarkerThemeEasyJavadocEasyCode-MybatisCodeHelperGenerateAllSetterGene......
  • IDEA下载、安装、配置与使用
    一、IDEA安装1、下载进入jetbrains官网https://www.jetbrains.com上述步骤下载的是:最新的Ultimate版IDEA。如果想要下载其他Ultimate版,则需按下图依次操作。2、安装双击下载好的IDEA安装包,进入安装向导,如下图所示,点击下一步。更改安装路径,按下图依次......
  • IntelliJ IDEA(IDEA)下无法解析 ApplicationContext 中的方法 getBean
    只需要:删除过程目录下的.idea文件后,关闭IDEA,再重新打开IDEA即可解决“getBean”报红问题。(注意:前提是要保证有依赖(Spring核心库配置正确、依赖版本兼容)、配置正确(ApplicationContext 创建正确、有 Bean定义、扫描包正确)、编码问题(导入正确的类、方法调用正确))以上原理:.i......
  • springboot 添加@Test(org.junit.Test) 注解后,idea右键菜单,没有运行项
    网上试了很多办法,包括检查idea的junit插件是否已安装,我安装了也用不了清除idea缓存,也不行。 后来将org.junit.Test换成  org.junit.jupiter.api.Test就可以了。maven引入包(注意这里版本换成5.9.3后不行)<dependency><groupId>org.junit.jupiter</groupI......
  • IDEA 神器!效率爆棚的技巧和插件,你都用上了吗?
    IDEA神器!效率爆棚的技巧和插件,你都用上了吗?各位老铁们,大家好!今天咱们来聊聊程序员的“瑞士军刀”——IntelliJIDEA。这玩意儿功能太强大了,用好了简直就是如虎添翼。今天就给大家分享一些我平时开发中总结的IDEA使用技巧和超级好用的插件,保证让你效率翻倍!IDEA神级技巧,让你代......