`

【优化】JAVA_OPTS 参数 -Xms 和 -Xmx的作用

 
阅读更多
本文转自:http://www.cnblogs.com/zxp_9527/archive/2008/12/24/1361911.html

因为调试JProfile,不断修改Tomcat初始内存参数,往往Servlet还没crash,环境先崩溃,开始怀疑初始化参数的作用。废话不多说,开始研究。网上的好资料不多,有一篇解释还比较清楚,就拿来主义了。

最近在网上看到一些人讨论到java.lang.Runtime类中的freeMemory(), totalMemory(), maxMemory()这几个方法的一些问题,很多人感到很疑惑,为什么,在java程序刚刚启动起来的时候freeMemory()这个方法返回的只有 一两兆字节,而随着java程序往前运行,创建了不少的对象,freeMemory()这个方法的返回有时候不但没有减少,反而会增加。这些人对 freeMemory()这个方法的意义应该有一些误解,他们认为这个方法返回的是操作系统的剩余可用内存,其实根本就不是这样的。这三个方法反映的都是 java这个进程的内存情况,跟操作系统的内存根本没有关系。下面结合totalMemory(), maxMemory()一起来解释。

maxMemory()这个方法返回的是java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存,以字节为单位,如果在运行java程序的时 候,没有添加-Xmx参数,那么就是64兆,也就是说maxMemory()返回的大约是64*1024*1024字节,这是java虚拟机默认情况下能 从操作系统那里挖到的最大的内存。如果添加了-Xmx参数,将以这个参数后面的值为准,例如java -cp you_classpath -Xmx512m your_class,那么最大内存就是512*1024*1024字节。

totalMemory()这个方法返回的是java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有 内存。如果在运行java的时候没有添加-Xms参数,那么,在java程序运行的过程的,内存总是慢慢的从操作系统那里挖的,基本上是用多少挖多少,直 到挖到maxMemory()为止,所以totalMemory()是慢慢增大的。如果用了-Xms参数,程序在启动的时候就会无条件的从操作系统中挖 -Xms后面定义的内存数,然后在这些内存用的差不多的时候,再去挖。

freeMemory()是什么呢,刚才讲到如果在运行java的时候没有添加-Xms参数,那么,在java程序运行的过程的,内存总是慢慢的从操 作系统那里挖的,基本上是用多少挖多少,但是java虚拟机100%的情况下是会稍微多挖一点的,这些挖过来而又没有用上的内存,实际上就是 freeMemory(),所以freeMemory()的值一般情况下都是很小的,但是如果你在运行java程序的时候使用了-Xms,这个时候因为程 序在启动的时候就会无条件的从操作系统中挖-Xms后面定义的内存数,这个时候,挖过来的内存可能大部分没用上,所以这个时候freeMemory()可 能会有些大。

自己写的一段小程序,用来帮助理解!java -cp . Getmem和java -cp . -Xms80m -Xmx80m Getmem比较!
分享到:
评论

相关推荐

    JAVA-OPTS参数设置.docx

    JAVA-OPTS参数设置 JAVA-OPTS 是一个变量,用于设置 JVM 相关运行参数。JVM 是 Java Virtual Machine 的缩写,表示 Java 虚拟机。JAVA-OPTS 变量的设置对 Java 应用程序的性能和稳定性具有重要影响。 在设置 JAVA-...

    JAVA_SET_enviroment

    在编程领域,尤其是Java开发中,正确地设置环境变量是至关重要的,因为它们指定了系统如何找到并执行Java相关程序,如JRE(Java运行时环境)和JDK(Java开发工具包)。 描述中提到的“NULL”意味着没有提供具体的...

    如何设置Tomcat的JVM虚拟机内存大小

    例如,增加`-Xms`和`-Xmx`的值可以扩大堆内存,`-XX:MaxNewSize`和`-XX:MaxPermSize`可以调整新生代和永久代的大小。需要注意的是,这些参数的设置应根据服务器的硬件资源和应用需求进行合理设定,过大的内存分配...

    修改JVM内存

    可以通过注册表或`TomcatW.exe`图形界面调整服务启动时的内存参数,也可以直接在`startup.bat`脚本中添加`JAVA_OPTS='-Xms1024 -Xmx1024m'`或`set JAVA_OPTS=-server -Xms1024m -Xmx1536m -XX:MaxNewSize=1024m -XX:...

    jdk 环境变量 JAVA_HOME 批处理文件 双击搞定

    jdk 环境变量 JAVA_HOME 批处理文件 双击搞定 最多只需修改个JAVA-HOME,其他的classpath path之类的bat文件搞定

    tomcat常用功能的配置

    set JAVA_OPTS=-Xms256m -Xmx256m -XX:MaxPermSize=64m ``` 这些配置可以帮助优化Tomcat的性能和稳定性,确保应用程序能够高效运行。 以上就是关于Tomcat常用功能配置的一些详细介绍,希望能帮助大家更好地管理和...

    tomcat优化方案

    本文将详细介绍一个关于Windows环境下Tomcat优化的具体方案,通过调整JVM参数和其他配置来提高Tomcat的稳定性和响应速度。 #### 二、Tomcat优化策略 ##### 1. Tomcat启动脚本调整 在`tomcat/bin/catalina.bat`文件...

    分别在Linux和Windows下设置JVM内存的简单方法

    添加:JAVA_OPTS=’-Xms512m -Xmx1024m’ 或者 JAVA_OPTS=”-server -Xms800m -Xmx800m  -XX:MaxNewSize=256m” 或者 CATALINA_OPTS=”-server -Xms256m -Xmx300m” Windows服务器: 在/apache-tomcat-5.5.23/bin ...

    Eclipse内存溢出

    set JAVA_OPTS=%JAVA_OPTS% -Xmx512m echo Using CATALINA_BASE: %CATALINA_BASE% set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintHeapAtGC set JAVA_OPTS=%JAVA_OPTS% -Xloggc:filename=jvm_output.log set JAVA_OPTS=%...

    解析Tomcat的启动脚本–catalina.bat

    概述 Tomcat 的三个最重要的启动脚本: startup.bat catalina.bat setclasspath.bat 上一篇咱们分析了 startup.bat 脚本 这一篇咱们来分析 catalina.bat 脚本. 至于 setclasspath.bat 这个脚本, 相信看完这一篇, ...

    jdk1.8.0_171-linux-x64

    oracle官方下载,本jdk是linux版,下载后配置环境变量后可直接使用 环境变量配置 1、打开配置文件: # sudo vim /etc/profile ... export JAVA_OPTS="$JAVA_OPTS -server -Xms1024m -Xmx2048m -XX:PermSize=512m

    tomcat_OutOfMemoreError处理方法

    set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m ``` 或者在Linux环境下: ```bash JAVA_OPTS="$JAVA_OPTS -server -Xms800m -Xmx800m -XX:MaxNewSize=256m" ``` 这里,`-Xms`设置初始堆...

    MyEclipse修改jvm内存.docx

    set JAVA_OPTS=-Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m ``` 这些参数的含义分别是: * -Xms1024m:设置jvm虚拟机的初始堆大小为1024m。 * -Xmx1024m:设置jvm虚拟机的最大堆大小为1024m。 * ...

    es以及kibana的镜像压缩包

    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ -e "discovery.type=single-node" \ -v es-data:/usr/share/elasticsearch/data \ -v es-plugins:/usr/share/elasticsearch/plugins --privileged --network es-...

    tomcat6.0 修改启动内存设置 java jvm参数配置

    JAVA_OPTS='-Xms512m -Xmx1024m' ``` 其中,`-Xms512m` 表示 JVM 启动时的初始堆内存大小为 512MB;`-Xmx1024m` 表示 JVM 最大堆内存大小为 1GB。 3. **重启 Tomcat 服务**: 保存并关闭文件后,重启 Tomcat ...

    IPQueue机制

    IP Queue机制

    设置jvm内存的方法

    set JAVA_OPTS=-Xms128m -Xmx256m ``` - **注册表修改**: - 对于安装版的Tomcat,可以通过修改注册表来设置JVM参数。路径为: ```reg HKEY_LOCAL_MACHINE\SOFTWARE\ApacheSoftwareFoundation\...

    解决Java_heap_space问题

    可以通过在 catalina.bat 文件中添加以下命令来解决该问题:set JAVA_OPTS=-Xms256m -Xmx512m -Djava.awt.headless=true。 Java_heap_space 问题是 Java 应用程序中一个常见的问题,解决该问题需要调整 JVM 堆空间...

    增加tomcat内存

    JAVA_OPTS="-Xms512m -Xmx512m" $JAVA_OPTS ``` 其中`-Xms512m`表示初始堆内存大小为512MB,`-Xmx512m`表示最大堆内存大小同样为512MB。 2. **通过环境变量进行配置** 除了直接修改`catalina.bat`或`catalina...

Global site tag (gtag.js) - Google Analytics