JVM常用参数解析

 2023-01-07
原文作者:春夏秋冬又一春酱 原文地址:https://juejin.cn/post/6916417600616398855

Jvm 参数 -Xms:java虚拟机堆区初始内存,通常为操作系统可用内存的1/64大小

-Xmx:java虚拟机堆区内存可被分配的最大上限,通常为操作系统可用内存的1/4大小。

-Xss256k单个线程堆的大小

开发过程中,通常会将-Xms 与-Xmx两个参数的配置相同的值,其目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源。

1、-XX:newSize:表示新生代初始内存的大小,应该小于-Xms的值; 2、-XX:MaxnewSize:表示新生代可被分配的内存的最大上限;当然这个值应该小于-Xmx的值; 3、-Xmn:至于这个参数则是对 -XX:newSize、-XX:MaxnewSize两个参数的同时配置,也就是说如果通过-Xmn来配置新生代的内存大小,那么-XX:newSize = -XX:MaxnewSize = -Xmn,虽然会很方便,但需要注意的是这个参数是在JDK1.4版本以后才使用的。

java虚拟机对非堆区内存配置的两个参数: 1、-XX:PermSize:表示非堆区初始内存分配大小(方法区) 2、-XX:MaxPermSize:表示对非堆区分配的内存的最大上限(方法区)。

在配置之前一定要慎重的考虑一下自身软件所需要的非堆区内存大小,因为此处内存是不会被java垃圾回收机制进行处理的地方。并且更加要注意的是最大堆内存与最大非堆内存的和绝对不能够超出操作系统的可用内存。

-Xms:minimum memory size for pile and heap -Xmx:maximum memory size for pile and heap

对于具体含义的猜测: 最开始只有 -Xms 的参数,表示 初始 memory size(m表示memory,s表示size); 紧接是参数 -Xms,为了对齐三字符,压缩了其表示形式,采用计算机中约定表示方式: 用 x 表示 “大”,因此 -Xmx 中的 m 应当还是 memory。 既然有了最大内存的概念,那么一开始的 -Xms 所表示的 初始 内存也就有了一个 最小 内存的概念(其实常用的做法中初始内存采用的也就是最小内存)。