JVM内存配置说明

-Xms512m -Xmx1024m

1.
   -Xmx    Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;
   -Xms    Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;
   -Xmn    Java Heap Young区大小,不熟悉最好保留默认值;    
   -Xss    每个线程的Stack大小,不熟悉最好保留默认值;   

2. 如何分配JVM内存设置:
    (1)当在命令提示符下启动并使用JVM时(只对当前运行的类Test生效):     java -Xmx128m -Xms64m -Xmn32m -Xss16m Test
    (2)当在集成开发环境下(如eclipse)启动并使用JVM时:
    a. 在eclipse根目录下打开eclipse.ini,默认内容为(这里设置的是运行当前开发工具的JVM内存分配):     -vmargs     -Xms40m     -Xmx256m
-vmargs表示以下为虚拟机设置参数,可修改其中的参数值,也可添加-Xmn,-Xss,另外,eclipse.ini内还可以设置非堆内存,如:-XX:PermSize=56m,-XX:MaxPermSize=128m.
    此处设置的参数值可以通过以下配置在开发工具的状态栏显示:     在eclipse根目录下创建文件options,文件内容为:org.eclipse.ui/perf/showHeapStatus=true
    修改eclipse根目录下的eclipse.ini文件,在开头处添加如下内容:     -debug  options     -vm  javaw.exe
    重新启动eclipse,就可以看到下方状态条多了JVM信息.
    b. 打开eclipse-窗口-首选项-Java-已安装的JRE(对在当前开发环境中运行的java程序皆生效)
    编辑当前使用的JRE,在缺省VM参数中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m
    c. 打开eclipse-运行-运行-Java应用程序(只对所设置的java类生效)     选定需设置内存分配的类-自变量,在VM自变量中输入:-Xmx128m -Xms64m
选定需设置内存分配的类-自变量,在VM自变量中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m
    注:如果在同一开发环境中同时进行了b和c设置,则b设置生效,c设置无效,如:
    开发环境的设置为:-Xmx256m,而类Test的设置为:-Xmx128m -Xms64m,则运行Test时生效的设置为:     -Xmx256m -Xms64m
    (3)当在服务器环境下(如Tomcat)启动并使用JVM时(对当前服务器环境下所以Java程序生效):     a. 设置环境变量:     变量名:CATALINA_OPTS
    变量值:-Xmx128m -Xms64m -Xmn32m -Xss16m
3
 b. 打开Tomcat根目录下的bin文件夹,编辑catalina.bat,将其中
的%CATALINA_OPTS%(共有四处)替换为:-Xmx128m -Xms64m -Xmn32m -Xss16m

### JVM内存配置文件的位置及其设置方法 JVMJava Virtual Machine)的内存配置通常通过命令行参数或者特定的应用程序配置文件来完成。以下是关于JVM内存配置文件位置以及其设置方法的具体说明。 #### 1. 配置文件位置 对于不同的应用场景,JVM内存配置可能存储在以下几个常见的地方: - **Eclipse IDE中的`eclipse.ini`文件** 如果你在使用 Eclipse 开发环境,则可以通过编辑 `eclipse.ini` 文件来进行 JVM 内存配置[^3]。该文件位于 Eclipse 安装目录的根路径下。例如,可以在此文件中指定 `-Xmx`, `-Xms` 等参数以调整最大/最小堆内存大小。 - **独立 Java 应用程序的启动脚本** 对于独立运行的 Java 应用程序,通常会在启动脚本(如 `.sh` 或者 `.bat` 脚本)中定义 JVM 参数。这些参数可以直接写入到启动命令中,比如: ```bash nohup java ${JAVA_OPT} -jar xxx.jar 2>&1& ``` 上述例子展示了如何通过 `${JAVA_OPT}` 变量传递 JVM 参数给应用程序[^4]。 - **Web容器或应用服务器配置文件** 若是基于 Tomcat, Jetty 或其他 Web 容器部署的应用程序,可以在相应的服务启动脚本(如 `setenv.sh` 或 `catalina.bat/sh` 中)加入 JVM 参数。例如,在 Tomcat 的 `bin/setenv.sh` 文件里添加如下内容: ```bash export JAVA_OPTS="-Xmx1024m -Xms512m" ``` #### 2. 常见的JVM内存参数解释 为了更好地理解如何合理设置 JVM 内存参数,下面列举了一些常用的选项及其作用: - **基本内存管理** - `-Xmx<size>` 和 `-Xms<size>` 分别用于设定 JVM 最大和初始堆内存大小。例如,`-Xmx128m -Xms64m` 表示最大堆为 128MB,初始堆为 64MB[^1]。 - `-Xmn<size>` 设定新生代(Young Generation)的大小。 - `-Xss<size>` 控制每个线程栈的空间大小。 - **垃圾回收调优** - `-XX:MaxGCPauseMillis=<N>` 设置期望的最大 GC 暂停时间目标,单位毫秒。G1 收集器会尝试满足此暂停时间需求[^2]。 - `-XX:G1HeapRegionSize=<size>` 自定义 G1 堆区域大小,推荐值通常是 2 的幂次方形式,范围介于几百 KB 到几 MB之间。 - `-XX:InitiatingHeapOccupancyPercent=<value>` 当整个堆占用率达到某个百分比时触发并发标记过程,默认值为 45%。 #### 3. 实际操作案例 假设我们需要优化一个运行在 Linux 平台上的 Spring Boot 微服务项目,具体做法如下: - 修改项目的启动脚本 `/etc/systemd/system/myapp.service` ,增加以下内容: ```ini Environment="JAVA_OPTS=-Xmx512m -Xms256m -Xmn128m -Xss512k \ -XX:+UseG1GC -XX:MaxGCPauseMillis=200 \ -XX:InitiatingHeapOccupancyPercent=70" ExecStart=/usr/bin/java $JAVA_OPTS -jar /opt/app/myapp.jar ``` 上述配置设置了合理的堆空间分布,并启用了 G1 垃圾收集算法以减少长时间停顿现象的发生。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值