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

createh52周前 (12-17)技术教程9

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 启动exe程序,传递参数和获取参数

这篇文章主要介绍了java 启动exe程序,传递参数和获取参数操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧1、java中启动exe程序 ,并添加传参String[] cmd =...

JVM诊断之查看运行参数 jvm运行参数说明

问题描述为了分析和定位一个Java线上系统问题,我们需要查看JVM启动时的一些参数设置,例如:垃圾回收算法、堆大小等等。这些参数可能在启动脚本中明确指明,也可能采用默认值。在系统运行过程中其他人也许动...

WebService的发布与调用 webservices调用

WebService 简介首先先说一下,什么是webService,webService也是一种CS结构的WEB服务,C呢就是Client(客户端),S呢就是Server(服务端),webServic...

Java方法参数传递的机制 java方法参数可以传空吗

目前两种比较流行的方法参数传递模式主要是值传递和引用传递。不同的编程语言对于这两种机制可能有不同的处理方式。对Java来说,一切都是严格按值传递的。接下来,我们来一起探讨下 Java 如何为各种类型传...

基于容器的Java内存参数解析 java内置容器

在基于物理的服务器(此处主要与容器平台进行区分,故此描述)上运行Java应用程序时,我们通常会使用Java虚拟机参数"-Xms、-Xmx"来指定Java堆内存的初始值和最大值。如果要将...