首页 > 编程语言 >Java虚拟机之常见参数配置

Java虚拟机之常见参数配置

时间:2022-11-20 13:46:57浏览次数:39  
标签:线程 Java 虚拟机 XX GC 内存 设置 大小 参数

 

 

-Xmx5g:设置堆最大内存为5G

-Xms5g:设置堆最小内存为5G,将最大和最小值设置一样,可以避免堆自动扩展,即垃圾回收后会重新分配堆内存空间,提高性能,一般也推荐这么做

-Xmn2g:设置堆中的年轻代大小为2G。整个堆大小=年轻代大小+老年代大小+持久代大小。持久代一般固定位64M,所以增大年轻代后,将会减少老年代大小,当老年代内存用完会引发Full GC,相当严重。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8

-XX:SurvivorRatio=8:设置年轻代中Eden区与一个Survivor区的比例为8:1,默认为8

-XX:NewRatio=2:设置老年代和年轻代比例大小2:1,默认为2

-Xss128k:设置每个线程的栈大小。JDK5.0以后每个线程栈大小为1M,以前每个线程栈大小为256K。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000-5000左右

-XX:PermSize -XX:MaxPermSize(JDK1.7及之前):设置永久代大小,jvm启动时,永久区一开始就占用了PermSize大小的空间,如果空间还不够,可以继续扩展,但是不能超过MaxPermSize,否则会OOM PermSiz space。如果设置,推荐是Xmx的1/4。

-XX:MetaspaceSize -XX:MaxMetaspaceSize(JDK1.8及之后):设置元空间的初始值和最大值

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=F:\ :调试用,可以让虚拟机在出现溢出内存异常时Dump出当前的内存堆转储快照以便时候进行分析, HeapDumpPath是指定文件存放路径。

-XX:MaxDirectMemorySize=10M:设置直接内存大小,如果不指定,则默认与Java堆最大值(-Xmx)一样。NIO操作会占用直接内存,因此大量的NIO操作可能引起直接内存溢出:Direct buffer memory

-XX:PretenureSizeThreshold=3145728:表示超过3M的数据直接在老年代中保存

-XX:MaxTenuringThreshold=30:设置年轻代中的对象存活多少次Minor GC后进入老年代。如果设置为0的话,则年轻代对象不经过Survivor区直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象在年轻代的存活时间,增加在年轻代即被回收的概率。设置为30表示一个对象如果在Survivor空间移动30次还没有被回收就放入年老代。

-XX:+UseParNewGC:设置年轻代为并行收集。可与CMS收集同时使用。JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值

-XX:ParallelGCThreads=8:配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等

-XX:+PrintGCTimeStamps:打印GC停顿时间,一般测试用

-XX:+PrintGCDetails:打印GC详细日志,一般测试用

如果满足下面的指标,则一般不需要进行GC优化:

  • Minor GC 执行时间不到50ms
  • Minor GC 执行不频繁,约10秒一次
  • Full GC 执行时间不到1s
  • Full GC 执行频率不算频繁,不低于10分钟1次

标签:线程,Java,虚拟机,XX,GC,内存,设置,大小,参数
From: https://www.cnblogs.com/shadowooom/p/16908324.html

相关文章

  • 报错信息java.lang.OutOfmemoryError: PermGen Space
    问题背景PermGenSpace的全称是PermanentGenerationSpace,是指内存的永久保存区域。这一部分用于存放class和meta的信息,class在加载的时候被放入PermGenSpace区域。它和......
  • java -Xms -Xmx -XX:PermSize -XX:MaxPermSize-详解
         在做java开发时尤其是大型软件开发时经常会遇到内存溢出的问题,比如说OutOfMemoryError等。这是个让开发人员很痛苦、也很纠结的问题,因为我们有时不知道什么样的......
  • java——多线程——并发与并行的了解以及区别
                     多线程的概念想要设计一个程序,边打游戏边听歌,怎么设计?得使用多进程或者多线程来解决.并发与并行并发:指两......
  • JSP、JavaBean
    JSP什么是JSPJavaServerPages:java服务器端页面,也和Servlet一样,用于开发动态Web技术!最大的特点:写JSP就像在写HTML区别:HTML只给用户提供静态的数据JSP页面中可以......
  • 狂神说Javase学习2
    JAVA方法详解方法的定义System.out.pringln(),那么它是什么呢类.对象.方法()设计方法的原则:就是一个方法只完成一个功能java的方法类似于其它语言的函数,是一段用来完成......
  • Java程序初始化顺序
    1.按Java理论,父类与子类的初始化顺序为:1.初始化父类静态变量2.初始化父类的静态代码块3.初始化子类的静态变量4.初始化子类的静态代码块5.父类的非静态变量6.父类的......
  • 前端项目npm打包出错问题-Reached heap limit Allocation failed - JavaScript heap o
    其实就是编译时的内存溢出,因为打包文件过大,刚好超过内存的限制大小造成编译中断。解决方案一通过package.json中的"build"加大内存增加--max_old_space_size参数解决方......
  • Java 2
    变量可以变化的量Java是强类型语言,每个变量都必须申明其类型Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域注意1.每个变量都必须有类型,类型可......
  • 【JAVA笔记】JAVA之IDEA快捷键指令汇总01
    一、IDEA常用快捷按键(1)代替鼠标操作快捷键智能提示:Alt+回车(常用)自动代码自动补全函数括号、分号、当前行缩进:Ctrl+Shift+回车提示代码模板:Ctrl+J使用xx块环......
  • java——异常——异常注意事项:子父类异常
                                       异常注意事项:子父类异常如果父类抛出了多个异常,子......