JVM内存大小设置

本文详细介绍了如何通过调整Java虚拟机(JVM)的内存参数来解决常见的内存溢出问题,包括-Xmx、-Xms等参数的具体含义及推荐设置。

一般情况下java程序容易出现java heap space 的错误提示,这个问题就是JVM的堆内存问题,因为其初始值非常小,所以在不够用的情况下要进行设置。

当然要确保你的程序正确,做的不是无限循环之类的无用功。在运行该程序时设置如下:

java -Xmx1g  -Xms1g application

-Xmx1g 设置最大可用内存为1g

-Xms1g 设置内存初始化最小值1g

后面application为你的JAVA程序名。

最大和最小值设置为一样的,是看了某贴:以避免每次垃圾回收完成后JVM重新分配内存

值的大小根据自己电脑配置而定,不能超过电脑的物理内存。有贴建议:-Xms 为电脑物理内存的1/64 ,-Xmx为电脑物理内存的1/4

--------------------------------------------------------------------------------------------

 

好像java 程序只有在运行时设置JVM大小,而没有一个可以永久设置的地方(也可能是我在网上没有搜到)

Tomcat 关于JVM的设置:

Linux中Tomcat的bin目录中有一个叫catalina.sh的文件,在

------------------------------------------------------------------------------------------------------------------------------

eclipse.ini文件可以调整Eclipse最大使用内存:

<Eclipse_Home>下面有一个eclipse.ini文件可以调整Eclipse最大使用内存,默认如下
-vmargs
-Xms40m
-Xmx256m


调整为:
-vmargs
-Xms40m
-Xmx256m
-XX:PermSize=64M
-XX:MaxPermSize=128M

1g内存推荐为:
-vmargs
-Xms128M
-Xmx512M
-XX:PermSize=64M
-XX:MaxPermSize=128M
 

 

对于MyEclipse的话,直接修改MyEclipse在桌面的快捷方式的参数就可以啦。现在解释这些参数的意思。

-vmargs:说明后面是VM的参数
-Xms40m:虚拟机占用系统的最小内存
-Xmx256m:虚拟机占用系统的最大内存
-XX:PermSize:最小堆大小。一般报内存不足时,都是说这个太小,
                       堆空间剩余小于5%就会警告,建议把这个稍微设
                               大一点,不过要视自己机器内存大小来设置
-XX:MaxPermSize:最大堆大小。这个也适当大些
-Xmx512M的5%为25.6M,理论上要求-Xmx的数值与-XX:MaxPermSize必须大于25.6M

把里面的参数改为
-vmargs 
-Xms128M 
-Xmx512M 
-XX:PermSize=128M 
-XX:MaxPermSize=256M

所以对于我而言,我只要把我的MyEclipse5.0改-XX:PermSize=128M-XX:MaxPermSize=256M,问题解决!
 
-----------------------------------------------------------------------------
<Eclipse_Home>下面有一个eclipse.ini文件可以调整Eclipse最大使用内存,默认如下
-vmargs
-Xms40m
-Xmx256m


调整为:
-vmargs
-Xms40m
-Xmx256m
-XX:PermSize=64M
-XX:MaxPermSize=128M

1g内存推荐为:
-vmargs
-Xms128M
-Xmx512M
-XX:PermSize=64M
-XX:MaxPermSize=128M
 

 

对于MyEclipse的话,直接修改MyEclipse在桌面的快捷方式的参数就可以啦。现在解释这些参数的意思。

-vmargs:说明后面是VM的参数
-Xms40m:虚拟机占用系统的最小内存
-Xmx256m:虚拟机占用系统的最大内存
-XX:PermSize:最小堆大小。一般报内存不足时,都是说这个太小,
                       堆空间剩余小于5%就会警告,建议把这个稍微设
                               大一点,不过要视自己机器内存大小来设置
-XX:MaxPermSize:最大堆大小。这个也适当大些
-Xmx512M的5%为25.6M,理论上要求-Xmx的数值与-XX:MaxPermSize必须大于25.6M

把里面的参数改为
-vmargs 
-Xms128M 
-Xmx512M 
-XX:PermSize=128M 
-XX:MaxPermSize=256M

所以对于我而言,我只要把我的MyEclipse5.0改-XX:PermSize=128M-XX:MaxPermSize=256M,问题解决!
### JVM内存大小设置的配置文件位置 JVM内存大小设置可以通过多种方式完成,常见的方法包括通过命令行参数、配置文件或IDE设置来调整。以下是关于JVM内存大小设置的配置文件位置及相关信息。 #### 1. **Tomcat中的JVM内存配置文件** 在使用Tomcat时,JVM内存大小通常通过`setenv.sh`(Linux/Mac)或`setenv.bat`(Windows)文件进行配置。这些文件位于Tomcat安装目录下的`bin`文件夹中。如果该文件不存在,可以手动创建,并添加如下内容以设置JVM内存参数[^1]: ```bash # Linux/Mac (setenv.sh) export JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxPermSize=256m" ``` ```bat :: Windows (setenv.bat) set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MaxPermSize=256m ``` 上述命令分别设置了初始堆内存(`-Xms`)、最大堆内存(`-Xmx`)和永久代(`-XX:MaxPermSize`)的大小。 #### 2. **Spring Boot应用中的JVM内存配置** 对于Spring Boot等基于嵌入式Tomcat的应用,JVM内存大小可以通过启动脚本或`application.properties`文件间接配置。例如,在启动脚本中添加以下内容: ```bash java -Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m -jar your-spring-boot-app.jar ``` 如果需要通过配置文件指定JVM参数,可以在`application.properties`中定义环境变量[^2]: ```properties JAVA_OPTS=-Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m ``` #### 3. **IDEA中的JVM内存配置** 在IntelliJ IDEA中,JVM内存大小设置可以通过运行配置或修改IDE的启动参数实现。对于项目级别的JVM内存设置,可以参考以下步骤: - 在运行配置中,点击`Modify options` -> `Add VM options`,然后输入类似以下的参数: ```bash -Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m ``` 此外,IDEA本身的JVM内存配置文件位于其安装目录下,具体路径为`bin/idea64.vmoptions`(Windows/Linux)或`Info.plist`(Mac)。可以通过编辑此文件调整IDE的内存限制[^3]。 #### 4. **其他常见配置文件** 除了上述场景外,JVM内存大小还可以通过以下文件或方式设置: - **Java应用程序的启动脚本**:如`start.sh`或`start.bat`,直接在脚本中添加`JAVA_OPTS`。 - **操作系统级别的环境变量**:通过设置全局环境变量`JAVA_OPTS`影响所有Java程序的JVM参数。 - **Docker容器中的配置**:在Dockerfile中通过`CMD`或`ENTRYPOINT`指定JVM参数。 ```dockerfile CMD ["java", "-Xms512m", "-Xmx1024m", "-XX:MaxMetaspaceSize=256m", "-jar", "app.jar"] ``` --- ### 示例代码 以下是一个简单的Java应用程序启动脚本示例,展示了如何设置JVM内存参数: ```bash #!/bin/bash JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m" java $JAVA_OPTS -jar your-application.jar ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值