对于jvm内存配置参数:

-Xmx128m -Xms256m -Xmn256m -XXSurvivorRatio=3

其中

-Xmx :堆的最大值

-Xms :堆的最小值

-Xmn :堆年轻代大小

-XXSurvivorRatio=3:代表Eden:Survivor = 3(-XXSurvivorRatio:Eden区和Survior区的占用比例)

堆内存设置为 容器的多少_java

常见配置汇总

堆设置

-Xms:初始堆大小,表示java虚拟机堆区内存初始内存分配的大小,通常为操作系统可用内存的1/64大小即可

-Xmx:最大堆大小,表示java虚拟机堆区内存可被分配的最大上限,通常为操作系统可用内存的1/4大小。但是开发过程中,通常会将 -Xms 与 -Xmx两个参数的配置相同的值,其目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源。

一般来讲对于堆区的内存分配只需要对上述两个参数进行合理配置即可。

-XX:NewSize=n:设置年轻代大小

-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4

-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5

-XX:PermSize:设置永久区的大小

-XX:MaxPermSize=n:设置持久代大小

-XX:TargetSurvivorRatio:设置survivior 的使用率。当达到这个空间使用率时,会将对象送入老年代。

方法区参数配置

-XX:PermSize:表示非堆区初始内存分配大小,其缩写为permanent size(持久化内存)
-XX:MaxPermSize:表示对非堆区分配的内存的最大上限

栈的容量配置
-Xss:设置线程栈的大小

本机直接内存设置

-XX:MaxDirectMemorySize :指定本机直接内存大小,如果不指定就表示和Java堆最大值(-Xmx)相同

例如:-Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m

上面设置的参数就是堆初始化128M,最大堆内存是512M;方法区初始化分配内存128M,方法区最大上限是512M。

收集器设置

-XX:+UseSerialGC:设置串行收集器

-XX:+UseParallelGC:设置并行收集器

-XX:+UseParalledlOldGC:设置并行年老代收集器

-XX:+UseConcMarkSweepGC:设置并发收集器

垃圾回收统计信息

-XX:+PrintGC

-XX:+PrintGCDetails

-XX:+PrintGCTimeStamps

-Xloggc:filename

并行收集器设置

-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。

-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间

-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)

并发收集器设置

-XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。

-XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。

知识补充:JVM内存区域总体分两类,heap区 和 非heap 区 。

heap区: Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。

非heap区: Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。

tomcat项目中配置jvm大小

进入tomcat项目找到bin/catalina.sh文件,在下图位置上加入jvm设置即可

堆内存设置为 容器的多少_java虚拟机_02

JAVA_OPTS="-Xms128m -Xmx256m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"
cygwin=false