通过tomcat修改JVM大小,以及查看JVM

    如果需要调试JVM性能或者增加JVM内存,需要修改JVM内存大小,修改的文件为tomcat\bin\catalina.bat文件,搜索"set JAVA_OPTS",在他的下面一行新增"set JAVA_OPTS=-Xms1024m -Xmx2048m"语句,如图所示:


其中堆的内存分配用-Xms和-Xmx

-Xms分配堆最小内存,默认为物理内存的1/64;-Xmx分配最大内存,默认为物理内存的1/4。
  • 1
  • 2

非堆内存分配用-XX:PermSize和-XX:MaxPermSize

-XX:PermSize分配非堆最小内存,默认为物理内存的1/64;-XX:MaxPermSize分配最大内存,默认为物理内存的1/4。

    

    很多人修改后,发现没有起作用,即通过windows的服务或者eclipse启动tomcat时,实际的内存还是默认的,修改的设置并没有起作用;而通过tomcat\bin\startup.bat 启动却是生效的。这是为什么呢?因为在安装过程中,JVM的初始化参数已经写在注册表中了,由于没有修改注册表中相关参数,所以以windows服务方式启动时,修改的并没有生效。而通过tomcat\bin\startup.bat 启动直接是通过tomcat\bin\catalina.bat文件中的配置的。你需要重新加载到系统服务中才生效,或者你手工在注册表中查找修改启动值,加载到服务中的时候参数已经配置好了,自己修改artup.bat不会改变注册表中的参数设置。

 查看JVM内存的两种方式:

 1)使用JDK自带的Jconsole连接上项目,在内存菜单中查看。

 2)在程序中查看JVM内存信息,可以输入如下代码:

Runtime.getRuntime().maxMemory();  //最大可用内存,对应-Xmx

Runtime.getRuntime().freeMemory();  //当前JVM空闲内存

Runtime.getRuntime().totalMemory();  //当前JVM占用的内存总数,其值相当于当前JVM已使用的内存及freeMemory()的总和


把Xms设置为1024M,Xmx设置为2048M后:

第一种查看内存的结果:


第二种查看内存的结果:

java代码输出:

最大可用内存,对应-Xmx:1908932608

当前JVM空闲内存:511153848

当前JVM占用的内存总数,其值相当于当前JVM已使用的内存及freeMemory()的总和:1297547264

不单独设置JVM内存,使用默认:

第一种查看内存的结果


第二种查看内存的结果

最大可用内存,对应-Xmx:932118528

当前JVM空闲内存:300234080

当前JVM占用的内存总数,其值相当于当前JVM已使用的内存及freeMemory()的总和:838402048


阅读更多
个人分类: JAVA
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

通过tomcat修改JVM大小,以及查看JVM

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭