精华内容
下载资源
问答
  • 设置JVM内存

    千次阅读 2011-02-25 12:05:00
    设置JVM内存设置 1. 设置JVM内存的参数有四个: -Xmx Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定; -Xms Java Heap初始值,Server端...

    设置JVM内存设置

    1. 设置JVM内存的参数有四个:

    -Xmx    Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;

    -Xms    Java Heap初始值,ServerJVM最好将-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内存分配):

     

    1.  -vmargs  

    2.   

    3.  -Xms40m  

    4.   

    5.  -Xmx256m 

    6.   

    -vmargs表示以下为虚拟机设置参数,可修改其中的参数值,也可添加-Xmn-Xss,另外,eclipse.ini内还可以设置非堆内存,如:-XX:PermSize=56m-XX:MaxPermSize=128m

    此处设置的参数值可以通过以下配置在开发工具的状态栏显示:

    eclipse根目录下创建文件options,文件内容为:org.eclipse.ui/perf/showHeapStatus=true

    修改eclipse根目录下的eclipse.ini文件,在开头处添加如下内容:

     

    1.  -debug  

    2.   

    3.  options  

    4.   

    5.  -vm  

    6.   

    7.  javaw.exe 

    8.   

    重新启动eclipse,就可以看到下方状态条多了JVM信息。

    b. 打开eclipse-窗口-首选项-Java-已安装的JRE(对在当前开发环境中运行的java程序皆生效)

    编辑当前使用的JRE,在缺省VM参数中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m

    c. 打开eclipse-运行-运行-Java应用程序(只对所设置的java类生效)

    选定需设置内存分配的类-自变量,在VM自变量中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m

    注:如果在同一开发环境中同时进行了bc设置,则b设置生效,c设置无效,如:

    开发环境的设置为:-Xmx256m,而类Test的设置为:-Xmx128m -Xms64m,则运行Test时生效的设置为:

    -Xmx256m -Xms64m

    3)当在服务器环境下(如Tomcat)启动并使用JVM时(对当前服务器环境下所以Java程序生效):

    a. 设置环境变量:

    变量名:CATALINA_OPTS

    变量值:-Xmx128m -Xms64m -Xmn32m -Xss16m

    b. 打开Tomcat根目录下的bin文件夹,编辑catalina.bat,将其中的%CATALINA_OPTS%(共有四处)替换为:-Xmx128m -Xms64m -Xmn32m -Xss16m

    二、查看设置JVM内存信息

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

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

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

    关于maxMemory()freeMemory()totalMemory()

    maxMemory()JVM的最大可用内存,可通过-Xmx设置,默认值为物理内存的1/4,设值不能高于计算机物理内存;

    totalMemory()为当前JVM占用的内存总数,其值相当于当前JVM已使用的内存及freeMemory()的总和,会随着JVM使用内存的增加而增加;

    freeMemory()为当前JVM空闲内存,因为JVM只有在需要内存时才占用物理内存使用,所以freeMemory()的值一般情况下都很小,而JVM实际可用内存并不等于freeMemory(),而应该等于maxMemory()-totalMemory()+freeMemory()。及其设置JVM内存分配。

     

    展开全文
  • 设置jvm内存

    千次阅读 2017-05-29 13:40:19
    1,打开windows系统环境变量  2,在系统变量中,新建变量JAVA_OPTS,值设置为 -Xms1024M -Xmx2048M -XX:PermSize=256M -XX:MaxNewSize=256M...设置完成后,web容器启动的时候,都会按这个配置初始化Java虚拟机内存

    1,打开windows系统环境变量 
    这里写图片描述

    2,在系统变量中,新建变量JAVA_OPTS,值设置为 -Xms1024M -Xmx2048M -XX:PermSize=256M -XX:MaxNewSize=256M -XX:MaxPermSize=512M 
    这里写图片描述

    设置完成后,web容器启动的时候,都会按这个配置初始化Java虚拟机内存。

    展开全文
  • 如何设置jvm内存

    千次阅读 2017-08-11 09:44:55
    本文向大家简单介绍一下进行JVM内存设置几种方法,安装Java开发软件时,默认安装包含两个文件夹,一个JDK(Java开发工具箱),一个JRE(Java运行环境,内含JVM),其中JDK内另含一个JRE。如果只是运行Java程序,则JRE已...

    本文向大家简单介绍一下进行JVM内存设置几种方法,安装Java开发软件时,默认安装包含两个文件夹,一个JDK(Java开发工具箱),一个JRE(Java运行环境,内含JVM),其中JDK内另含一个JRE。如果只是运行Java程序,则JRE已足够;而JDK则只有开发人员才用到。这里将为大家介绍设置JVM内存分配的几招。

    工具/原料

    • 一台电脑

    方法/步骤

    1.     -Xmx    Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定; 

          -Xms    Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值; 

          -Xmn    Java Heap Young区大小,不熟悉最好保留默认值;     -Xss    每个线程的Stack大小,不熟悉最好保留默认值;    

    2. 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. 3

       b. 打开Tomcat根目录下的bin文件夹,编辑catalina.bat,将其中

      的%CATALINA_OPTS%(共有四处)替换为:-Xmx128m -Xms64m -Xmn32m -Xss16m 

    展开全文
  • JDK8 合理设置JVM内存参数

    千次阅读 2019-11-21 12:04:11
    不过,用更少的资源发挥更大的作用是条正道,所以应合理设置JVM内存。 不同java应用对内存要求不同,合适的JVM参数只能通过对每个应用实际运行过程中内存占用数据收集后才能确定。即先设置初值,然后在应用运行过程...

    总述

    基本知识

    JDK8内存模型

    参数

    GC基本要点

    内存数据收集工具

    JVM参数调整过程

    一阶段(设置堆区总内存)

    二阶段(调整New区内存)

    三阶段(调整Eden与Survivor)


    总述

    生产系统稳定性很重要,JVM内存越大,内存溢出的风险越低。只要主机内存允许,多浪费点内存在JVM上也无可厚非。不过,用更少的资源发挥更大的作用是条正道,所以应合理设置JVM内存。

    不同java应用对内存要求不同,合适的JVM参数只能通过对每个应用实际运行过程中内存占用数据收集后才能确定。即先设置初值,然后在应用运行过程中收集内存占用数据,最后计算各内存区域的大小。

    本文主要讲解如何初步确定一个新应用的内存参数,至于更细致的优化方案没做描述。

    基本知识

    JDK8内存模型

    JDK8对内存区域的划分中去掉了之前版本的持久区(PermGen),-XX:PermSize和-XX:MaxPermSize参数失效,也不会发生java.lang.OutOfMemoryError: PermGen异常。取而代之的是元空间(Metaspace),元空间GC与堆区GC独立。

    堆区内存模型:

    JVM默认比例是Eden:S0:S1:Tenured=8:1:1:20。JVM“浪费”掉S1,即40份内存只有39份内存实际储存数据。

    Old:New=2:1,对应参数–XX:NewRatio=2;Eden:S0=8:1,对应参数–XX:SurvivorRatio=8。

    堆区内存回收分为New区的YGC和Old区的FGC。

    参数

    -Xms128M :设置堆内存最小值

    -Xmx128M :设置堆内存最大值

    -XX:NewSize=64M :设置New区最小值

    -XX:MaxNewSize=64 :设置New区最大值

    -XX:NewRatio=2 :设置Old区与New区的比例

    -Xmn64M :设置New区大小,等价于-XX:NewSize=64M 与-XX:MaxNewSize=64M两个参数,此值一旦设置则–XX:NewRatio无效。

    -XX:SurvivorRatio=8 :设置Eden区与两个S区之和的比例

    -verbose:gc :输出每次GC的相关情况

    -Xloggc :../logs/gc.log 日志文件的输出路径

    -XX:+PrintGC :输出GC日志

    -XX:+PrintGCDetails :输出GC的详细日志

    -XX:+PrintGCTimeStamps :输出GC的时间戳(以基准时间的形式)

    -XX:+PrintGCDateStamps :输出GC的时间戳(以日期的形式,如 2019-11-20T21:53:59.234+0800)

    -XX:+PrintHeapAtGC :在进行GC的前后打印出堆的信息

     

    GC基本要点

    新对象在Eden区创建,Eden区空间不足触发YGC。Eden区空间还是不足将对象创建在Old区。

    新对象大小超过-XX:PretenureSizeThreshold参数(默认值是0)大小直接创建在Old区。

    进行YGC时存活的对象在S1(To Space)区中存不下,那么把存活的对象转移到Old区。

    进行YGC时存活的对象gc次数超过-XX:MaxTenuringThreshold(默认值15)的值,那么把存活的对象转移到Old区。

    Old区内存不足时触发FGC,如果空间还不够,则JVM抛出OutOfMemoryError。

    内存数据收集工具

    借助JDK自带命令行jstat -gc pid,显示的大小为KB。

    字段含义为C:总容量,U:已使用容量,S0,S1:survivor区,E:Eden区,O:Old区,M:元空间,CC:CompressedClassSpaceSize,YGC:young区回收次数,YGCT:YGC的总时间,FGC:Old区回收次数,FGCT:FGC的总时间,GTC:YGCT+FGCT。

    如 jstat -gc 11925

    也可使用jmap -heap pid 命令显示堆内存状况。

    JVM参数调整过程

    打印GC日志的参数:-verbose:gc -Xloggc:gc.log -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC

    其中gc.log可设置成实际路径。

    一阶段(设置堆区总内存)

    目标:只设置堆区的总内存,JVM各区使用默认比例

    参数:-Xms128M -Xmx128M

    运行应用程序一段时间后,多次采样数据:

    gstat -gc 11925

    jmap -heap 11925

    可以看到 2次FGC,470次YGC,GC频率还过的去。分析数据后发现两个问题:一、Old区利用率非常低只占用17%,128M内存还是有点浪费;二、Eden区利用率很高,自然的YGC的次数也确实高了点。

    先缩小总内存,基于以上数据计算应用所需总内存=28M+14M,即42M。但To Space会浪费2.5%(1/40)的内存,极限堆区内存=42/(1-2.5%)=44.21M,取个整数用64M应该能满足。即参数:-Xms64M -Xmx64M。64M约是1.5倍的内存。不放心可以用2倍内存89M,取个整数用:-Xms96M -Xmx96M。

    使用极限内存大小可满足应用的基本的运行,不过,可预知的结果是FGC的频率会非常高

    备注:以上的算法将Eden+S0+Old作为堆内存的可用空间,考虑一个极端情况,某次YGC后恰巧把所有Eden区的对象转移到了Old区。所以保险点极限内存应以Old区为基准,则上面的例子中应保证Old区大小不低于42M,极限堆区内存=42/(2/3)=63M。

    二阶段(调整New区内存)

    目标:减少YGC的频率

    参数:-Xms128M -Xmx128M -Xmn64M

    以前面实例,统计数据中应用程序产生的对象占用内存42M,而New区的容量是38M,堆总内存128M,理论闲置80M空间,所以将New区内存超过42M也不为过。

    修改之后,实测jstat -gc 14854,感觉差异不大。

    三阶段(调整Eden与Survivor)

    目标:减少YGC时因Survior空间不足直接转移到Old区

    参数:-Xms128M -Xmx128M -Xmn64M -XX:SurvivorRatio=4

    Eden与Survior是个矛盾,Eden与Survior的比例较大时导致YGC时因S1(To)区空间不足直接把数据转移到Old区;比例较小时S1空间浪费较大。

    常说二八定律,但-XX:SurvivorRatio=8 中的8是Eden区与两个S区之和的比例,不防将Eden与S0区的比例设置成8,也即由8:1:1改成8:2:2,对应-XX:SurvivorRatio=4。推荐值在4到8之间。

     

     

     

     

     

     

     

    展开全文
  • MyEclipse设置JVM内存大小

    千次阅读 2015-06-06 22:44:26
    1.为什么要设置JVM内存大小呢?  因为如果你的程序运行时超过JVM默认内存大小,就不会报传说中内存溢出异常。 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at junit.Bean.main...
  • tomcat下设置jvm内存参数

    千次阅读 2013-11-30 11:17:12
    tomcat下设置jvm内存参数
  • Eclipse中设置JVM内存

    千次阅读 2014-11-19 10:38:27
    Eclipse 中设置JVM 内存  今天在eclipse 中测试把文档转换为图片的时候,报出了下面的错误:  java.lang.OutOfMemoryError: Java heap space   从上边的异常信息可以看到,JVM 需要使用的内存已经超过...
  • Tomcat 设置JVM内存大小

    千次阅读 2019-01-02 11:45:11
    1、jvm内存管理机制:    1)堆(Heap)和非堆(Non-heap)内存  按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在...
  • 查看设置JVM内存信息

    2010-03-12 19:35:00
    查看设置JVM内存信息Runtime.getRuntime().maxMemory(); //最大可用内存,对应-XmxRuntime.getRuntime().freeMemory(); //当前JVM空闲内存Runtime.getRuntime().totalMemory(); //当前JVM占用的内存总数,其值...
  • 一、设置JVM内存设置 1. 设置JVM内存的参数有四个: -Xmx Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定; -Xms Java Heap初始值,Server端JVM最好将-...
  • 设置JVM内存的大小 写一个bat文件 java -jar -Xmx1G /your_burpsuite_path/burpsuite.jar 解决页面显示文字的乱码错误 页面错误如图: 解决办法如图:
  • zookeeper设置JVM内存的方法

    千次阅读 2014-07-02 15:26:02
     该文件已经明确说明有独立JVM内存设置文件,路径是zookeeper/conf/java.env 大家可能会说,没有看到这个路径下有java.env文件啊,那如果没看到就自己搞一个好了 java.env文件内容如下:   #!/bin/sh ...
  • eclipse中设置JVM内存

    万次阅读 2018-05-07 17:07:44
    初学者非常容易混淆eclipse.ini文件的作用,这个文件 是 eclipse 软件的 配置文件,配置了eclipse 启动,eclipse是用Java写...这里设置的最小内存和最大内存是留给启动eclipse程序的那个虚拟机使用的,我们要修改ecl...
  • Elasticsearch设置JVM内存参数

    千次阅读 2020-06-17 14:36:42
    在CentOS 7中,该文件位于/etc/elasticsearch/jvm.options中,并使用变量“ -Xms [SIZE] g -Xmx [SIZE] g”设置更多的内存,例如: ..... -Xms4g -Xmx4g ..... | grep -v grep 这将允许Java虚拟机使用4G“总堆空​​...
  • Eclipse 中设置JVM 内存JVM监控调优

    千次阅读 2015-06-17 16:26:18
    说明我们给jvm的持久代设置的值太小,此时你需要打开eclispe 中window->preferences->Java->Installed JRE ,点击右侧的Edit 按钮,在编辑界面中的 “Default VM Arguments ”选项中,将-XX:PermSize及 -XX:...
  • MyEclipse设置JVM内存

    千次阅读 2016-03-16 14:15:37
  • Eclipse中设置JVM内存方法

    千次阅读 2016-12-16 17:16:52
    在eclipse中跑项目的时候,如果项目应用了大量的第三方依赖或者eclipse配置jvm内存本来就不够等的时候很容易出现以上这个错误:内存溢出。 一、 尝试修改Eclipse.ini 文件 (可是此方法不行)  Eclipse.ini ...
  • myeclipse设置jvm内存

    千次阅读 2009-12-03 16:25:00
    如果没有进行设置的话,在使用MyEclipse的经常出现如下图所示内存不足的提示。提示中说的很明白:“MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) space remains.”意思是说...
  • tomcat 配置成window服务后设置jvm内存

    千次阅读 2017-08-05 13:54:53
    打开注册表,找到目录HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat7\Parameters\Java,其中目录地址中红色标注的(如... 在右侧可以看到JvmMs和JvmMx项,其中JvmMs设置最小的内存使用参
  • bat启动时设置JVM内存大小

    千次阅读 2015-08-12 13:20:46
    问题现象:服务器上的应用出现java.lang.OutOfMemoryError: Java heap space,连带出现h2db获取新数据库链接出错(“Failed to acquire ...解决:其他同志说的设置JAVA_OPTS系统环境变量的方法,需要在bat里...
  • 如何在MyEclipse中设置JVM内存

    万次阅读 2014-10-13 14:22:56
    方法一: 打开eclipse,选择Window--Preferences...在对话框左边的树上双击...出现一个 Edit JRE 的对话框,在其中的Default VM Arguments: 框中输入 -Xms128m -Xmx512m ,这样设置Java拟虚机内存使用最小是128M,
  • myeclipse设置jvm内存 及其分析

    万次阅读 2012-12-10 16:56:18
    最近换台机器, 又出现这个问题, 却发现光凭...解决JAVA内存溢出问题:  windows-->preference-->MyEclipse-->Servers-->Tomcat-->Tomcatx.x-->JDK  在右边的Optional Java VM arguments里加上:-Xms256m -Xmx512
  • 解决JAVA内存溢出问题:  windows-->preference-->MyEclipse-->Servers-->Tomcat-->Tomcatx.x-->JDK  在右边的Optional Java VM arguments里加上:-Xms256m -Xmx512m  数值可以根据自己的电脑配置自己设定.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 506,038
精华内容 202,415
关键字:

如何设置jvm内存