常用JVM内存设置以及调优

编程教程 > Java (1400) 2025-01-25 15:11:50

常用JVM内存设置以及调优

JVM内存简介

JVM占用的内存称为堆(heap),
他被分成三个区:
1>年轻(young,又称为new)
2>老(tenred,又称为old)
3>永生(perm)
这里的三个区按照java的生命周期进行划分,在new区的对象生存期最短,很快就会被gc回收;perm区的对象生存期最长,与JVM同生同死,perm区的对象不会被gc回收
New区又被分为三个部分:
1>伊甸园(eden)
2>幸存者1(survivor)
3>幸存者2(survivor)
对象的创建总是在eden部分.两个survivor中总有一个是空的,他作为另外一个survivor的缓冲区.当发生gc时,所有的eden和survivor中活下来的对象被移动到另一个survivor中.对象会在两个survivor直接不断移动,直到获得足够久然后移动到old区
 

GC回收算法

除了默认的垃圾回收算法外,JVM还提供了两个

  1. 并行(parallel)
  2. 并发(concurrent)

前者作用于new区,后者作用于old区,两者可以同时使用.并行算法会产生多个线程以提高执行效率.当有多个CPU内核的时候,会显著的缩短gc的工作时间
 

性能参数说明

参数 含义 说明
-Xms Heap的最小值 默认为系统物理内存的1/64
-Xmx Heap 的最大值 默认为系统物理内存的1/4
,作为同行的标准设置Xms和Xmx的大小一样,可以减少GC次数
-Xmn New的大小  
-XX:PermSize Perm的最小值  
-XX:MaxPermSize Perm 的最大值 类似heap的设置,应该讲perm设置为固定大小.
-XX:SurvivorRatio New区中eden与Survivor区的比值  
-XX:+UseParallelGC 使用parallelGC  
-XX:ParallelGCThreads Parallel gc的线程个数 与CPU核心数相同,使得所有CPU都参与GC工作

 

常见工具JVM设置

1.eclipse

方法1:
进入eclipse的安装存放目录
 

1


找到eclipse.ini文件.打开
 

2

2.tomcat

Linux系统:
修改TOMCAT_HOME/bin/catalina.sh
在第一行的后面添加一句

JAVA-OPTS=’-server –Xms256m –Xmx512m –XX:PermSize=128M –XX:MaxPermSize=256M’


注意Linux必须有单引号
Windows系统
修改TOMCAT_HOME/bin/catalina.bat
在第一行后面添加

set JAVA-OPTS=-server –Xms256m –Xmx512m –XX:PermSize=128M –XX:MaxPermSize=256M

注意:windows没有引号
注意:java options中每一行不能有空格

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
常用JVM内存设置以及调优JVM内存简介JVM占用的内存称为堆(heap),他被分成三个区:1&gtl;年轻(young,又称为new)2&gtl;老(tenred,又称为ol
JVM调优总结篇(一),这里主要搬运了csdn大神得总结。收藏以后可能会用到
本文针对Java虚拟机对程序性能影响,通过设置不同的Java虚拟机参数来提升程序的性能。首先从Java虚拟机各个性能方面来进行监控,找出Java虚拟机中可能对程序性能影响较大的,然后先通过小实验...
了解JDK、JRE 和 JVM 之间的差异
当开发人员谈论Java应用程序及其开发环境时,JDK,JRE和JVM是非常常见的词汇。让我们来看看这些词之间的差异。
找到Java项目进程PID首先执行 jps 命令找到相应 java 进程的 pid:jps1 springBootMain 导出 jvm 内存堆栈快照hprof
tomcat 8 Linux参数调优,通过Java启动命令参数调整来实现jvm内存调优
Java基础JVM中堆和栈理解,收集各大网站各大牛人的语录,在Java中,内存主要分为两种,一种是栈(stack)内存,另一种就是堆内存(heap)(某些情况下说的堆栈内存是指栈内存)。
MySQL慢查询优化_MySQL慢查询排查_MySQL慢查询设置配置
垃圾回收(GC)一直是Java受欢迎背后的重要特性之一。垃圾回收是Java中用于释放未使用的内存的机制。本质上,它追踪所有仍在使用的对象,并将剩下的标记为垃圾。Java的垃圾回收被认为是一种自动...
截至 8 月 19 日,Java 17 已进入第二个也是最后一个候选版本
JDK11 90+ 新特性新功能(第二部分:非开发人员功能)
JAVA10 升级后的几个我们值得关注的新特性。尤其是第一个,赶紧看看JDK10的新特性吧。
Java 12(2019 年 3 月 19 日发布)是 JDK 可用的最新版本