Eclipse中JVM内存设置
JVM内存设置方法

JVM内存设置方法JVM(Java虚拟机)是Java程序的运行环境,它负责执行Java字节码,并管理程序的内存。
在运行Java程序时,合理地设置JVM的内存大小是非常重要的,它会影响程序的性能和稳定性。
下面是一些关于JVM内存设置的方法和注意事项:1. 初始堆大小(-Xms)和最大堆大小(-Xmx):初始堆大小指定了JVM初始时分配的堆内存大小,最大堆大小则指定了堆内存的上限。
可以通过在启动命令中加上-Xms和-Xmx参数来设置堆内存大小,例如:```java -Xms256m -Xmx512m MyApp```这样就设置了初始堆大小为256MB,最大堆大小为512MB。
2.堆内存的大小选择:堆内存的大小应根据应用程序的需求和服务器硬件条件来选择。
如果堆内存过小,可能会导致OutOfMemoryError;如果堆内存过大,可能会导致频繁的垃圾回收,影响程序的性能。
可以通过监控JVM的堆使用情况来判断是否需要调整堆内存的大小。
可以使用JVM自带的JVisualVM工具或第三方的工具如G1GC日志分析工具进行监控。
3.堆内存的分代设置:堆内存分为新生代(Young Generation)、老年代(Old Generation)和永久代(Permanent Generation,JDK8及之前的版本)/元空间(Metaspace,JDK8及之后的版本)。
新生代用于存储新创建的对象,老年代用于存储长时间存活的对象,永久代/元空间用于存储类和方法等信息。
可以通过设置堆内存的分代比例来调整堆内存的大小,例如:```-XX:NewRatio=2```这样就将堆内存的新生代和老年代的大小比例设置为1:2、可以根据应用程序的特点和需求进行调整。
4.非堆内存的设置:非堆内存包括方法区、直接内存等。
可以通过设置参数来调整非堆内存的大小,例如:```-XX:MaxMetaspaceSize=256m```这样就设置了元空间的最大大小为256MB。
java jvm参数

java jvm参数
Java 虚拟机(JVM)参数是用来配置 Java 虚拟机运行时环境的一组参数。
它们可以用来控制 JVM 的内存使用情况,调整垃圾回收器的行为,debugging,启用额外的错误检查等等。
1、-Xms:设置JVM初始内存大小,默认是物理内存的1/64。
2、-Xmx:设置JVM最大可用内存大小,一般设置为物理内存的1/4或1/8。
3、-Xss:设置JVM单个线程栈内存大小,通常为
512K到1024K之间。
4、-XX:+UseSerialGC:开启串行垃圾收集器,使用单线程工作,可以提高性能,但是应用程序也会受到影响。
5、-XX:+PrintGCDetails:打印出垃圾回收的详细信息,方便进行性能调优。
6、-XX:MaxPermSize:设置持久代的最大内存大小,默认情况下,持久代的内存大小取决于MaxHeapSize的值。
7、-XX:NewRatio:设置新生代和老年代的比例,默认情况下是2,即新生代是老年代的一半。
8、-XX:SurvivorRatio:设置Eden区和Survivor区的比例,默认情况下是8,即Eden区是Survivor区的八分之一。
JVM内存大小配置方式

JVM内存大小配置方式By:sheagle@1.最简单的方式,tomcat当中进行配置用记事本打开tomcat安装路径下bin文件夹中的Catalina.bat,在文件当中添加set JAV A_OPTS=-Xms256m-Xmx512m该方式只适合于使用Catalina Start指令及其类似方式通过执行Startup.bat中的指令方式启动tomcat2.在Eclipse当中配置tomcat的内存启动大小Eclipse->Window->Preferences->Server->Runtime Environments->选中Apache Tomcat v5.0->点击Edit按钮->在弹出对话框里点击JRE后面的Installed JREs按钮->在弹出对话框中选中tomcat使用的那个JRE->点击Edit按钮->在弹出对话框中,找到Default VM Arguments,并在输入框中输入:-Xms256M-Xmx512M该修改方式只适合于使用Eclipse启动tomcat3.在注册表中修改tomcat大小如果你的电脑上边安装了tomcat服务,那么你也可以通过以下设置来修改通过服务启动时的tomcat内存。
打开tomcat安装路径下bin文件夹中的tomcat6w.exe。
选中Java,修改Inital memory pool和Maximum memory pool该修改方式只适合于使用“服务”方式启动tomcat总结:关于tomcat启动时JVM虚拟机内存大小的配置,针对每种情况会有多种不同的配置方式,基本上都是修改配置文件中参数的大小,无论使用哪种配置方式进行配置,只要能达到效果即可。
jvm标准参数

jvm标准参数JVM标准参数JVM(Java Virtual Machine)是一种虚拟机,它是Java程序的执行环境。
在JVM中,有很多参数可以设置,这些参数可以通过命令行或者配置文件来设置。
这篇文章将详细介绍JVM标准参数。
一、概述JVM标准参数分为两类:通用参数和非通用参数。
通用参数适用于所有的JVM实现,而非通用参数只适用于某些特定的实现。
二、通用参数1. -Xms-Xms是指JVM启动时堆内存的最小值。
例如,-Xms512m表示JVM启动时堆内存的最小值为512MB。
2. -Xmx-Xmx是指JVM启动时堆内存的最大值。
例如,-Xmx1024m表示JVM启动时堆内存的最大值为1GB。
3. -Xmn-Xmn是指新生代的大小。
新生代是指在垃圾收集中被划分为年轻代和幸存区的内存区域。
例如,-Xmn256m表示新生代大小为256MB。
4. -XX:PermSize-XX:PermSize是指永久代(Permanent Generation)大小。
永久代是一种特殊的内存区域,它主要用于存放类信息、常量池等数据。
例如,-XX:PermSize=64m表示永久代大小为64MB。
5. -XX:MaxPermSize-XX:MaxPermSize是指永久代的最大值。
例如,-XX:MaxPermSize=128m表示永久代的最大值为128MB。
6. -Xss-Xss是指每个线程的堆栈大小。
例如,-Xss256k表示每个线程的堆栈大小为256KB。
7. -XX:+UseParallelGC-XX:+UseParallelGC是指使用并行垃圾收集器。
并行垃圾收集器可以在多个CPU上同时进行垃圾收集,从而提高垃圾收集效率。
8. -XX:+UseConcMarkSweepGC-XX:+UseConcMarkSweepGC是指使用CMS(Concurrent Mark Sweep)垃圾收集器。
CMS垃圾收集器可以在应用程序运行时进行垃圾回收,从而减少应用程序停顿时间。
jvm常用调优参数

jvm常用调优参数
JVM是JavaVirtualMachine的缩写,是Java程序运行的核心。
JVM的调优是优化Java应用程序性能的重要一环,其中调优参数的合理设置是关键。
以下是常用的JVM调优参数:
1. -Xms:设置JVM的初始内存大小,默认为物理内存的
1/64。
2. -Xmx:设置JVM的最大内存大小,超出该内存大小后会触发垃圾回收。
3. -Xmn:设置年轻代的大小,一般设置为总内存的1/3或
1/4。
4. -XX:SurvivorRatio:设置年轻代中Eden区和Survivor区的比例,默认值为8。
5. -XX:NewRatio:设置新生代和老年代的比例,默认值为2。
6. -XX:MaxPermSize:设置永久代的大小,一般设置为
256MB。
7. -XX:+UseConcMarkSweepGC:使用CMS垃圾回收器,可以减少内存抖动。
8. -XX:+UseParallelGC:使用并行垃圾回收器,可提高垃圾回收效率。
9. -XX:+HeapDumpOnOutOfMemoryError:当JVM内存溢出时,生成堆转储文件。
10. -XX:+PrintGCDetails:打印垃圾回收的详细信息。
以上是常用的JVM调优参数,通过合理地设置参数,可以优化Java应用程序的性能。
JVM参数参数调优

JVM参数参数调优JVM(Java Virtual Machine)是Java虚拟机的缩写,它是Java程序运行的环境。
在运行Java程序时,可以通过调优JVM参数来提高程序的性能和稳定性。
下面将详细介绍一些常见的JVM参数以及如何进行参数调优。
1.内存参数调优:- -Xms:设置JVM的初始堆大小,即JVM启动时占用的内存大小。
可以通过增加-Xms参数来增加初始堆大小,从而减少GC(Garbage Collection)次数,提高程序的响应速度。
- -Xmx:设置JVM的最大堆大小,即JVM能够使用的最大内存大小。
可以通过增加-Xmx参数来增加最大堆大小,从而让程序能够处理更多的数据量或者更大的数据结构。
2.垃圾回收参数调优:- -XX:+UseSerialGC:使用串行垃圾回收器,适用于小型应用或开发环境。
串行垃圾回收器是单线程运行的,适合对资源比较敏感的环境。
- -XX:+UseParallelGC:使用并行垃圾回收器,适用于多核CPU的服务器。
并行垃圾回收器使用多个线程来进行垃圾回收,提高垃圾回收的效率。
- -XX:+UseConcMarkSweepGC:使用CMS(Concurrent Mark Sweep)垃圾回收器,适用于响应时间敏感的应用。
CMS垃圾回收器采用并发的方式进行垃圾回收,减少了垃圾回收的停顿时间。
- -XX:+UseG1GC:使用G1(Garbage First)垃圾回收器,适用于大型内存和多核CPU的情况。
G1垃圾回收器将内存分成多个固定大小的区域,更加高效地处理大对象。
3.线程参数调优:- -XX:ParallelGCThreads:设置并行垃圾回收的线程数量。
可以根据CPU的核心数来设置线程数量,提高垃圾回收的效率。
- -XX:MaxGCPauseMillis:设置垃圾回收的最大停顿时间。
可以根据程序的性能要求来设置最大停顿时间,避免长时间的垃圾回收导致程序的响应速度下降。
设置JVM参数,查看堆大小

设置JVM参数,查看堆⼤⼩1.在eclipse设置JVM参数打开eclipse-窗⼝-⾸选项-Java-已安装的JRE(对在当前开发环境中运⾏的java程序皆⽣效,也就是在eclipse中运⾏的java程序)编辑当前使⽤的JRE,在缺省VM参数中输⼊:-Xmx1024m -Xms1024m -Xmn256m -Xss16m或者在运⾏⼀个java程序的时候执⾏:java -Xmx1024m -Xms1024m -Xmn256m -Xss16m TestTest是⼀个class⽂件。
2. 在Tomcat服务器上设置JVM参数set CATALINA_OPTS=-Xmx512m -Xms512m -Xmn64m -Xss2m或者set JAVA_OPTS=-Xmx512m -Xms512m -Xmn64m -Xss2m设置CATALINA_OPTS 和 JAVA_OPTS都是⼀个道理,在启动tomcat的时候设置参数。
两者区别是JAVA_OPTS在tomcat停⽌的时候也会执⾏这个命令。
注意:Tomcat分为安装版(*.exe)和⾮安装版或者解压版(*.zip),个⼈还是⽐较喜欢解压版。
两者虽然在功能上没有什么区别,但是在设置上还是有要注意的地⽅。
这⾥只谈JVM设置要注意的地⽅。
安装版:windows的服务会有⼀个tomcat服务,当启动服务的时候Tomcat会从注册表读取JVM的参数。
也就是说当在tomcat的lib⽂件夹下catalina.bat或者startup.bat中设置JVM参数是⽆效的。
解决办法:设置tomcat的注册表;或者使⽤startup.bat启动tomcat。
解压版:当点击startup.bat时,它会读取catalina.bat中的配置,不管在startup.bat⽂件还是在catalina.bat⽂件中设置JVM参数,都会读取JVM参数。
3. 查看堆的⼤⼩在程序中查看,返回值单位是字节,当然还有其他JVM参数可以查看。
Eclipse JVM运行参数

Eclipse JVM运行参数
基本参数
-Xms:初始堆空间
-Xmx:最大堆空间
-Xmn:新生代的大小
-XX:MaxHeapSize 最大内存
-XX:NewRation 新生代和老年代的比例(老年代/新生代)
-XX:HeapDumpOnOutMemoryError 内存错误
-XX:HeapDumpPath 堆的存放路径
-XX:PermSize 永久区的大小
-XX:MaxPermSize 最大永久区的大小
-Xss:线程堆的大小
-XX:MaxMetaspaceSize 永久区的最大可用值
-XX:MaxDirectMemorySize 最大直接使用内存
跟踪垃圾回收
-XX:+PrintGC 垃圾回收日志
-XX:+PrintGCDetails 垃圾回收日志(详细)
-XX:+PrintHeapAtGC 堆信息
-XX:+PrintTimeStamps GC发生的时间
-XX:+PrintTimeApplicationConcurrentTime GC执行执行时的停顿时间-verbose:class 类的加载和卸载
-XX:+TraceClassLoading 类的加载
-XX:+TraceClassUnloading 类的卸载
-XX:+PrintClassHistogram 类的分布
-XX:+PrintVMOptions 显式参数
-XX:+PrintCommandLineFlags 显式和隐式参数
-XX:+PrintFlagFinal 系统参数的值。
Eclipse堆栈和内存大小设置

1, 设置Eclipse 内存使用情况修改eclipse 根目录下的eclipse.ini 文件-vmargs // 虚拟机设置,说明后面是VM 的参数-Xms40m //Xms 是默认的虚拟机内存大小-Xmx256m //Xmx 是最大内存-XX:PermSize=128M // 非堆内存设置,最小堆大小。
一般报内存不足时,都是说这个太小,堆空间剩余小于5%就会警告,建议把这个稍微设//大一点,不过要视自己机器内存大小来设置-XX:MaxPermSize=256M注意:为何将上面的参数写入到eclipse.ini 文件Eclipse 没有执行对应的设置?这是因为我们没有遵守eclipse.ini 文件的设置规则:参数形如“项值”这种形式,中间有空格的需要换行书写;如果值中有空格的需要用双引号包括起来。
比如我们使用-vm C:/Java/jre1.6.0/bin/javaw.exe 参数设置虚拟机,在eclipse.ini 文件中要写成这样:1. -vm2. C:/Java/jre1.6.0/bin/javaw.exe按照上面所说的,最后参数在eclipse.ini 中可以写成这个样子:1.-vmargs2. -Xms128M3. -Xmx512M4. -XX:PermSize=64M5. -XX:MaxPermSize=128M实际运行的结果可以通过Eclipse 中“Help-”“About Eclipse SDK 窗”口里面的“Configuration Details 按钮”进行查看。
另外需要说明的是,Eclipse 压缩包中自带的eclipse.ini 文件内容是这样的:1.-showsplash.eclipse.platform3. --launcher.XXMaxPermSize4.256m5.-vmargs6. -Xms40m7. -Xmx256m其中-auncher.XXMaxPermSize (注意最前面是两个连接线)跟-XX:MaxPermSize参数的含义基本是一样的,我觉得唯一的区别就是前者是动的时候设置的参数,而后者是eclipse所使用的JVM中的参数。
如何设置Java虚拟机JVM启动内存参数

如何设置Java虚拟机JVM启动内存参数Tomcat默认的Java虚拟机JVM启动内存参数⼤约只有64MB或者128MB,⾮常⼩,远远没有利⽤现在服务器的强⼤内存,所以要设置Java虚拟机JVM启动内存参数。
具体设置⽅法为:Tomcat修改TOMCAT_HOME/bin/catalina.bat,在[echo Using CATALINA_BASE: "%CATALINA_BASE%"] 上⾯加⼊,⽐如:set JAVA_OPTS= -server -Xms1536m -Xmx1536m或者JAVA_OPTS="-server -Xms1536m -Xmx1536m",服务器模式参数-server不加也可以,就变成set JAVA_OPTS= -Xms1536m -Xmx1536m或者JAVA_OPTS=" -Xms1536m -Xmx1536m",1536m只是举个例⼦,具体可以在DOS命令窗⼝中测试能使⽤多⼤的Java虚拟机内存,能显⽰JDK/JRE/JVM版本号的就说明能使⽤命令中设置的Java虚拟机内存,如执⾏Java -Xmx1280m -version;Java -Xmx1408m -version;Java -Xmx1536m -version;Java -Xmx1664m -version;Java -Xmx2048m -version;⽐如在下列DOS命令窗⼝中执⾏java -Xmx1024m -version,显⽰出JDK/JRE/JVM版本号,说明最⼤能使⽤1024MB的Java虚拟机内存:下图中执⾏Java -Xmx1152m -version,不能显⽰出JDK/JRE/JVM版本号,说明不能使⽤1152MB的Java虚拟机内存:等等,但是JVM启动内存参数也不可能⽆限增⼤,因为他受限于物理内存和操作系统的限制,Windows操作系统下⼀般可以使⽤1.6GB左右的Java虚拟机内存,有些JDK如Jrockit可能最⼤可达1.9GB左右,此外,Linux、⼩型机AIX等情况可以较⼤。
Eclipse内存不足的解决办法

Eclipse内存不足的解决办法
前一段时间在Eclipse中调试工程的时候,会报出内存不足,然后可以取消但是几次之后Eclipse就会死在哪里,不得不结束重启。
曾经从资料上看到,可能是Eclipse的自动构建导致消耗了内存,但是取消自动构建后每次调试的时候不得不手工构建,有时候忘记了就会导致调试不出结果。
今天又学到了一招,怎么解决。
可以增大java虚拟机内存,在Eclipse的安装目录有Eclipse的配置文件eclipse.ini,修改它就可以了-vmargs
-Xms40m
-Xmx400m
其中-vmargs指这个参数是用于java的虚拟机(virtual machine)的,-Xms表示最小值,-Xmx表示最大值,可以根据机器的具体情况设置最大值。
除了修改配置文件的办法之外,还可以通过设置启动参数的办法,新建一个Eclipse快捷方式,在快捷方式属性的目标框中后添加:-vmargs –Xmx400M -XX:MaxPermSize=256M
-Xmx400M 表示将eclipse分配的内存从默认的256M增加到400M
-XX:MaxPermSize=256M 表示将eclipse长期保持的内存由默认的64M增加到256M
注意:上面两个数字的差必须大于-Xmx数值的5%。
我遇见过Tomcat内存不足的情况,当时解决的方式是进入Tomcat文件夹bin中,找到catalina.bat编辑,在:donesetargs后面增加set JAVA_OPTS = -Xms64 - Xms128
好象默认是32-64的吧,该为64-128应该够用了。
JVM(java虚拟机)内存设置

JVM(java虚拟机)内存设置⼀、设置JVM内存设置1. 设置JVM内存的参数有四个:-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内存分配):1. -vmargs2. -Xms40m3. -Xmx256m-vmargs表⽰以下为虚拟机设置参数,可修改其中的参数值,也可添加-Xmn,-Xss,另外,eclipse.ini内还可以设置⾮堆内存,如:-XX:PermSize=56m,-XX:MaxPermSize=128m。
此处设置的参数值可以通过以下配置在开发⼯具的状态栏显⽰:在eclipse根⽬录下创建⽂件options,⽂件内容为:org.eclipse.ui/perf/showHeapStatus=true修改eclipse根⽬录下的eclipse.ini⽂件,在开头处添加如下内容:1. -debug2. options3. -vm4. javaw.exe重新启动eclipse,就可以看到下⽅状态条多了JVM信息。
b. 打开eclipse-窗⼝-⾸选项-Java-已安装的JRE(对在当前开发环境中运⾏的java程序皆⽣效)编辑当前使⽤的JRE,在缺省VM参数中输⼊:-Xmx128m -Xms64m -Xmn32m -Xss16mc. 打开eclipse-运⾏-运⾏-Java应⽤程序(只对所设置的java类⽣效)选定需设置内存分配的类-⾃变量,在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 -Xss16mb. 打开Tomcat根⽬录下的bin⽂件夹,编辑catalina.bat,将其中的�TALINA_OPTS%(共有四处)替换为:-Xmx128m -Xms64m -Xmn32m -Xss16m⼆、查看设置JVM内存信息Runtime.getRuntime().maxMemory(); //最⼤可⽤内存,对应-XmxRuntime.getRuntime().freeMemory(); //当前JVM空闲内存参数及其默认值描述-XX:-DisableExplicitGC 禁⽌调⽤System.gc();但jvm 的gc 仍然有效-XX:+MaxFDLimit最⼤化⽂件描述符的数量限制-XX:+ScavengeBeforeFullGC 新⽣代GC 优先于Full GC 执⾏-XX:+UseGCOverheadLimit 在抛出OOM 之前限制jvm 耗费在GC 上的时间⽐例-XX:-UseConcMarkSweepGC 对⽼⽣代采⽤并发标记交换算法进⾏GC -XX:-UseParallelGC启⽤并⾏GCRuntime.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参数配置原则JVM参数配置原则JVM(Java Virtual Machine)是Java程序运行的平台,通过JVM 参数的配置可以对Java应用的性能和行为进行调优。
合理的JVM参数配置能够提升应用的性能和稳定性,因此掌握JVM参数配置原则是非常重要的。
本文将介绍一些常用的JVM参数配置原则,帮助开发人员更好地进行JVM参数的调优。
一、根据应用需求进行内存分配在JVM参数配置中,最重要的参数是-Xmx和-Xms,它们用于指定JVM堆内存的最大值和初始值。
合理配置堆内存大小可以避免内存溢出或浪费。
通常情况下,可以将-Xmx设置为物理内存的70%到80%,而-Xms则可以设置为-Xmx的一半。
这样可以保证应用有足够的内存供应,并且避免堆内存的频繁扩容和回收。
二、设置合适的新生代和老年代比例JVM的堆内存主要分为新生代和老年代两部分。
新生代用于存放新创建的对象,而老年代用于存放生命周期较长的对象。
通过参数-XX:NewRatio可以设置新生代和老年代的比例。
一般情况下,可以将新生代的比例设置为3或4,即新生代占整个堆内存的1/3或1/4。
这样可以保证新生代有足够的空间进行对象的创建和回收。
三、调整垃圾回收算法JVM的垃圾回收算法有很多种,如Serial、Parallel、CMS和G1等。
不同的应用场景可以选择不同的垃圾回收算法以达到最优的性能。
对于较小的应用,可以选择Serial或Parallel垃圾回收算法,它们在单线程和多线程环境下都有良好的性能表现。
对于大型应用,可以选择CMS或G1垃圾回收算法,它们能够在较短时间内完成垃圾回收,减少应用的停顿时间。
四、设置合适的垃圾回收参数除了选择合适的垃圾回收算法外,还需要根据具体应用的特点设置合适的垃圾回收参数。
例如,可以通过参数-XX:MaxGCPauseMillis设置最大垃圾回收停顿时间,以控制垃圾回收对应用的影响。
可以通过参数-XX:ParallelGCThreads设置并行垃圾回收的线程数,以提高垃圾回收的效率。
ecology安装JDK配置问题

关于ecology安装及安装期间出现问题处理:
在安装Ecology上一般问题出现在JDK 上,故整理问题及处理方法如下:
环境:OS Windows Server 2008 R2 Enterprise sp1 64位
DB Microsoft SQL Server 2005
OA软件:ecology 7.0612 64位
问题一:JAVA JVM 因内存问题启动不起来
1、下面开始配置环境变量,右击【计算机】---【属性】-----【高级系统设置】----【高级】---【环境变量】,如图
2、选择【新建】--弹出“新建用户变量”对话框,在“变量名”文本框输入“JAVA_HOME”,在“变量值”文本框输入JDK的安装路径(也就是WEAVER下JDK的文件夹路径),单击“确定”按钮,如图:
3、在“系统变量”选项区域中查看PATH变量,如果不存在,则新建变量PATH,否则选中该变量,单击“编辑”按钮,在“变量值”文本框的起始位置添加“%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;”或者是直接“%JAVA_HOME%\bin;”,单击确定按钮,如图:
4、在“系统变量”选项区域中查看CLASSPATH 变量,如果不存在,则新建变量CLASSPATH,否则选中该变量,单击“编辑”按钮,在“变量值”文本框的起始位置添加“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;”。
如图:
4、现在测试环境变量的配置成功与否。
在DOS命令行窗口输入“JAVAC”,输出帮助信息即为配置正确。
JVM内存设置多大合适?Xmx和Xmn如何设置?

JVM内存设置多⼤合适?Xmx和Xmn如何设置?JVM内存设置多⼤合适?Xmx和Xmn如何设置?问题:新上线⼀个java服务,或者是RPC或者是WEB站点,内存的设置该怎么设置呢?设置成多⼤⽐较合适,既不浪费内存,⼜不影响性能呢?分析:依据的原则是根据Java Performance⾥⾯的推荐公式来进⾏设置。
296d1509689688.png具体来讲:Java整个堆⼤⼩设置,Xmx 和 Xms设置为⽼年代存活对象的3-4倍,即FullGC之后的⽼年代内存占⽤的3-4倍永久代 PermSize和MaxPermSize设置为⽼年代存活对象的1.2-1.5倍。
年轻代Xmn的设置为⽼年代存活对象的1-1.5倍。
⽼年代的内存⼤⼩设置为⽼年代存活对象的2-3倍。
BTW:1、Sun官⽅建议年轻代的⼤⼩为整个堆的3/8左右,所以按照上述设置的⽅式,基本符合Sun的建议。
2、堆⼤⼩=年轻代⼤⼩+年⽼代⼤⼩,即xmx=xmn+⽼年代⼤⼩。
Permsize不影响堆⼤⼩。
3、为什么要按照上⾯的来进⾏设置呢?没有具体的说明,但应该是根据多种调优之后得出的⼀个结论。
如何确认⽼年代存活对象⼤⼩?⽅式1(推荐/⽐较稳妥):JVM参数中添加GC⽇志,GC⽇志中会记录每次FullGC之后各代的内存⼤⼩,观察⽼年代GC之后的空间⼤⼩。
可观察⼀段时间内(⽐如2天)的FullGC之后的内存情况,根据多次的FullGC之后的⽼年代的空间⼤⼩数据来预估FullGC之后⽼年代的存活对象⼤⼩(可根据多次FullGC之后的内存⼤⼩取平均值)⽅式2:(强制触发FullGC, 会影响线上服务,慎⽤)⽅式1的⽅式⽐较可⾏,但需要更改JVM参数,并分析⽇志。
同时,在使⽤CMS回收器的时候,有可能不能触发FullGC(只发⽣CMS GC),所以⽇志中并没有记录FullGC的⽇志。
在分析的时候就⽐较难处理。
BTW:使⽤jstat -gcutil⼯具来看FullGC的时候, CMS GC是会造成2次的FullGC次数增加。
eclipse.ini内存设置

-vm
C:Javajre1.6.0binjavaw.exe
按照上面所说的,最后参数在eclipse.ini中可以写成这个样子:
-vmargs
-Xms128M
-Xmx512M
-XX:PermSize=64M
-XX:MaxPermSize=128M
实际运行的结果可以通过Eclipse中“Help”-“About Eclipse SDK”窗口里面的“Configuration Details”按钮进行查看。
堆内存分配
JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置 -Xms、-Xmx相等以避免在每次GC 后调整堆的大小。
3. 为何将上面的参数写入到ห้องสมุดไป่ตู้clipse.ini文件Eclipse没有执行对应的设置?
那为什么同样的参数在快捷方式或者命令行中有效而在eclipse.ini文件中是无效的呢?这是因为我们没有遵守eclipse.ini文件的设置规则:
参数形如“项 值”这种形式,中间有空格的需要换行书写,如果值中有空格的需要用双引号包括起来。比如我们使用-vm C:Javajre1.6.0binjavaw.exe参数设置虚拟机,在eclipse.ini文件中要写成这样:
堆(Heap)和非堆(Non-heap)内存
按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。
mc jvm参数

mc jvm参数摘要:1.引言2.JVM 参数简介3.JVM 参数设置方法4.JVM 参数对性能的影响5.如何合理设置JVM 参数6.总结正文:1.引言Java 虚拟机(JVM)是Java 程序运行的基础,它的参数设置对程序的性能有着至关重要的影响。
本文将详细介绍JVM 参数的相关知识,帮助你更好地优化Java 程序的性能。
2.JVM 参数简介JVM 参数是用于控制JVM 行为的命令行选项。
通过设置这些参数,可以调整JVM 的内存管理、垃圾回收、性能监控等方面的行为。
JVM 参数的设置可以在启动Java 程序时通过命令行指定,也可以通过Java 代码动态设置。
3.JVM 参数设置方法(1)命令行设置:在启动Java 程序时,在命令行中添加-Xmx、-Xms、-Xmn 等参数,例如:`java -Xmx1g -Xms1g -Xmn512m MyClass`。
(2)Java 代码设置:通过`System.setProperty()`方法设置JVM 参数,例如:`System.setProperty("java.vm.maxMemory", "1g");`。
4.JVM 参数对性能的影响(1)-Xmx:设置最大堆内存,过大的值可能导致内存浪费,过小的值可能引发内存溢出。
(2)-Xms:设置初始堆内存,与-Xmx 一起可以控制堆内存的增长。
(3)-Xmn:设置年轻代内存大小,影响垃圾回收频率和吞吐量。
(4)-XX:SurvivorRatio:设置年轻代和老年代的比例,影响垃圾回收策略。
(5)-XX:+UseConcMarkSweepGC:启用CMS 垃圾回收器,提高低延迟应用的性能。
5.如何合理设置JVM 参数(1)根据应用的内存需求设置合适的堆内存大小。
(2)根据应用的负载和响应时间要求,调整年轻代和老年代的比例。
(3)对于低延迟应用,可以考虑使用CMS 垃圾回收器。
JVM启动参数设置

JVM启动参数设置JVM(Java Virtual Machine)是Java编程语言的核心运行环境,它负责执行Java字节码以及提供内存管理和线程管理等功能。
在JVM启动时,可以通过设置一些启动参数来优化JVM的性能和调整各种资源的使用情况。
本文将介绍一些常用的JVM启动参数设置。
1. -Xms 和 -Xmx:这两个参数用于设置JVM的初始堆大小和最大堆大小。
例如,-Xms256m 设置JVM的初始堆大小为256MB,-Xmx1g 设置JVM的最大堆大小为1GB。
可以根据实际情况调整这两个参数,以避免堆内存溢出或者浪费资源。
2. -Xmn:该参数用于设置年轻代的大小。
年轻代用于存放新创建的对象,所以设置一个合理的年轻代大小可以提高垃圾回收的效率。
例如,-Xmn256m 设置年轻代大小为256MB。
3. -XX:SurvivorRatio:该参数用于设置年轻代中Eden区和Survivor区的大小比例。
Eden区用于存放新创建的对象,Survivor区用于存放经过一次垃圾回收后仍然存活的对象。
例如,-XX:SurvivorRatio=8 表示Eden区和Survivor区的大小比例为8:14. -XX:MaxPermSize:该参数用于设置永久代的最大大小。
永久代用于存放类的元数据信息,如类的结构、方法、字段等。
在Java 8及之后的版本中,永久代被元数据区(Metaspace)取代,所以该参数在Java 8及之后的版本中已经无效。
5. -XX:PermSize:该参数用于设置永久代的初始大小。
在Java 8及之后的版本中,该参数已经无效。
6. -XX:MaxMetaspaceSize:该参数用于设置元数据区的最大大小。
元数据区用于存放类的元数据信息。
例如,-XX:MaxMetaspaceSize=256m 设置元数据区的最大大小为256MB。
在Java 8及之前的版本中,可以使用-XX:MaxPermSize来设置永久代的最大大小。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Eclipse中JVM内存设置
eclipse.ini内存设置
-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
这里有几个问题:
1. 各个参数的含义什么?
2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?
3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?
下面我们一一进行回答
1. 各个参数的含义什么?
参数中-vmargs的意思是设置JVM参数,所以后面的其实都是JVM的参数了,我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。
堆(Heap)和非堆(Non-heap)内存
按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。
堆是在Java 虚拟机启动时创建的。
”“在JVM中堆之外的内存称为非堆内存(Non-heap memo ry)”。
可以看出JVM主要管理两种类型的内存:堆和非堆。
简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。
堆内存分配
JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。
默认空余堆内存小于40%时,JVM就会增大堆直到-X mx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。
因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。
非堆内存分配
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxP ermSize设置最大非堆内存的大小,默认是物理内存的1/4。
JVM内存限制(最大值)
首先JVM内存限制于实际的最大物理内存(废话!呵呵),假设物理内存无限大的话,J VM内存的最大值跟操作系统有很大的关系。
简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows 系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。
2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?
通过上面对JVM内存管理的介绍我们已经了解到JVM内存包含两种:堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。
所以说设置VM参数导致程序无法启动主要有以下几种原因:
1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;
2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。
说到实际物理内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。
3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?
那为什么同样的参数在快捷方式或者命令行中有效而在eclipse.ini文件中是无效的呢?这是因为我们没有遵守eclipse.ini文件的设置规则:
参数形如“项值”这种形式,中间有空格的需要换行书写,如果值中有空格的需要用双引号包括起来。
比如我们使用-vm C:Javajre1.6.0binjavaw.exe参数设置虚拟机,在eclips e.ini文件中要写成这样:
按照上面所说的,最后参数在eclipse.ini中可以写成这个样子:
实际运行的结果可以通过Eclipse中“Help”-“About Eclipse SDK”窗口里面的“Configur ation Details”按钮进行查看。
另外需要说明的是,Eclipse压缩包中自带的eclipse.ini文件内容是这样的:
其中–launcher.XXMaxPermSize(注意最前面是两个连接线)跟-XX:MaxPermSize参数的含义基本是一样的,我觉得唯一的区别就是前者是eclipse.exe启动的时候设置的参数,而后者是eclipse所使用的JVM中的参数。
其实二者设置一个就可以了,所以这里可以把–launcher.XXMaxPermSize和下一行使用#注释掉。
3. 其他的启动参数。
如果你有一个双核的CPU,也许可以尝试这个参数:
让GC可以更快的执行。
(只是JDK 5里对GC新增加的参数)。