jvm调优

jvm调优

为什么要调优?

JVM调优是确保Java应用程序高效运行的关键。Java应用通常需要管理内存、垃圾收集、线程和性能监测等方面的问题。不正确的配置和性能问题可能导致内存泄漏、应用程序崩溃或低效率。通过JVM调优,您可以更好地利用系统资源,提高应用性能,减少停顿时间,降低成本。

调优的参数

堆内存参数

  • -Xms:初始堆大小,默认为物理内存的1/64。
  • -Xmx:最大堆大小,默认为物理内存的1/4。
  • -Xmn:年轻代堆大小。通过这个值也可以得到老生代的大小:(-Xmx)-(-Xmn)
  • -XX:MaxPermSize(在JVM 8之前)或 -XX:MaxMetaspaceSize(在JVM 8及之后):永久代或元数据空间的最大大小

堆中年轻代和老年代默认比例是1:2,那么年轻代占600多近700M,年轻代又分为Eden和两个survivor区,默认比例8:1:1,按照年轻代700M算,Eden就是560M,survivor区就是70M。

示例:

export CATALINA_OPTS=“-Xms5120M -Xmx5120M -XX:PermSize=4096m -XX:MaxPermSize=4096m -XX:+UseG1GC”

垃圾回收器参数

  • -XX:+UseSerialGC:使用串行垃圾收集器
  • -XX:+UseParallelGC:使用并行垃圾收集器
  • -XX:+UseConcMarkSweepGC:使用CMS垃圾收集器
  • -XX:+UseG1GC:使用G1垃圾收集器
  • -XX:G1HeapRegionSize:G1垃圾收集器中每个区域的大小

垃圾收集相关参数

  • -XX:NewRatio设置年轻代和老年代的比例

  • -XX:MaxGCPauseMillis:最大垃圾收集暂停时间目标

  • -XX:ParallelGCThreads:并行垃圾收集器线程数

  • -XX:ConcGCThreads:CMS垃圾收集器并发线程数

栈和线程参数

  • -Xss:设置线程栈的大小
  • -XX:ThreadStackSize:另一种设置线程栈大小的方式

代码分析

  • 减少对象的创建
  • 使用合适的数据结构

调优工具

调优工具见另外一篇博文

JVM调优工具

你可能感兴趣的:(JVM,jvm)