java面试题|JVM调优常用JVM参数代码实例简介

createh54个月前 (12-17)技术教程37

JVM(Java Virtual Machine)启动参数用于配置Java应用程序的运行时环境,包括内存管理、垃圾回收(GC)算法、性能调优和日志记录等。


# JVM启动参数,不换行格式

# 设置堆内存最大值和初始值

-Xmx4g -Xms4g

# 指定垃圾回收算法为G1 GC,并设置最大GC停顿时间为50毫秒

-XX:+UseG1GC -XX:MaxGCPauseMillis=50

# 指定垃圾回收并行线程数

-XX:ParallelGCThreads=4

# 打印详细的垃圾回收日志,并包含日期时间戳

-XX:+PrintGCDetails -XX:+PrintGCDateStamps

# 指定垃圾回收日志文件路径

-Xloggc:gc.log

# 指定Meta区的最大值(用于存储类的元数据)

-XX:MaxMetaspaceSize=2g

# 设置单个线程栈的大小

-Xss1m

# 当堆内存溢出时,自动进行Dump,并指定Dump文件路径

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/

# 指定默认的连接超时时间和读取超时时间(单位为毫秒)

-Dsun.net.client.defaultConnectTimeout=2000

-Dsun.net.client.defaultReadTimeout=2000

# 指定时区,例如设置为东八区

-Duser.timezone=GMT+08

# 设置默认的文件编码为UTF-8

-Dfile.encoding=UTF-8

# 指定随机数熵源,使用非阻塞的伪随机数生成器

-Djava.security.egd=file:/dev/./urandom

参数解释

  • -Xmx4g -Xms4g:-Xmx设置Java堆的最大值,-Xms设置Java堆的初始值。这里都设置为4GB。
  • -XX:+UseG1GC -XX:MaxGCPauseMillis=50:启用G1垃圾收集器,并尝试将最大GC停顿时间控制在50毫秒以内。
  • -XX:ParallelGCThreads=4:设置垃圾回收时使用的并行线程数。
  • -XX:+PrintGCDetails -XX:+PrintGCDateStamps:打印详细的GC日志,并包含日期时间戳,有助于分析GC行为。
  • -Xloggc:gc.log:指定GC日志的输出文件。
  • -XX:MaxMetaspaceSize=2g:设置Metaspace(用于存储类的元数据)的最大大小。
  • -Xss1m:设置每个线程的栈大小为1MB。
  • -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/:当堆内存溢出时,自动进行堆内存Dump,并指定Dump文件的存储路径。
  • 连接超时和读取超时:用于设置网络连接的默认超时时间,有助于控制网络请求的性能。
  • -Duser.timezone=GMT+08:设置JVM的时区为东八区。
  • -Dfile.encoding=UTF-8:设置默认的文件编码为UTF-8,确保正确处理国际化字符。
  • -Djava.security.egd=file:/dev/./urandom:指定随机数生成器的熵源,使用/dev/./urandom可以避免在某些系统上启动时的阻塞问题。

相关文章

Java基础之抽象类、接口作为方法参数和返回值

不同修饰符使用细节常用来修饰类、方法、变量的修饰符public 权限修饰符,公共访问, 类,方法,成员变量protected 权限修饰符,受保护访问, 方法,成员变量默认什么也不写 也是一种权限修饰符...

Spring-AOP 及 AOP获取request各项参数操作

Spring-AOP 及 AOP获取request各项参数AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待。一、AOP的基本概念Aspect(切面):通常...

SpringBoot接口 - 如何优雅的对参数进行校验?

在以SpringBoot开发Restful接口时, 对于接口的查询参数后台也是要进行校验的,同时还需要给出校验的返回信息放到上文我们统一封装的结构中。那么如何优雅的进行参数的统一校验呢? @pdai什...