当前位置:首页 > 内存 > 正文

jvm内存配置参数

  • 内存
  • 2024-04-21 22:12:20
  • 8721

一、JVM性能调优(2)——内存设置和查看GC日志

1)JVM内存分配遵循以下参数:

一般设置-Xms和-Xmx相等,-XX:MetaspaceSize和-XX:MaxMetaspaceSize相等。-Xms与-XX:InitialHeapSize相同,-Xmx与-XX:MaxHeapSize相同;

2)JVM参数可以这样设置:

3)从命令行开始,可以设置它们。形式如下:

1)设置GC参数:

以下参数启动以便可以看到GC日志:

Eg。JVM在idea中添加了如下的Start参数:

在程序之前,都打印了这些:

从第三行CommandLineflags中可以得到如下信息:2)查看默认参数:

如果想查看默认的JVM参数,可以将GC参数添加到JVM打印输出中并查看默认值。GC日志中的JVM环境。

还可以在启动参数中添加-XX:+PrintFlagsFinal参数,该参数会打印所有系统参数,可以看到配置的参数或者默认的系统参数:

3)GC日志:

以下是每个垃圾收集日志中生成的日志:

详细信息为:

2020-09-25T13:00:41.631+0800:GC发生的时间点。
4.013:系统运行后多久完成GC,单位是秒。
GC(AllocationFailure):表示触发GC的原因。
PSYoungGen:指年轻代的垃圾收集,采用Parallelsscavenge垃圾收集。
419840K->20541K:在年轻代进行了一次GC。
(472064K):年轻代可用的空间为472064K,即461M。因为新生代大小为512M,Eden区域占用409.6M,两个幸存区各占用51.2M,所以年轻代可用的空间为Eden+1Survivor大小,即460.8M,大约是461M。
419840K->20573K:GC之前使用的堆内存全部为419840K,GC之后使用的堆内存为20573K。
(996352K):堆总大小为996352K,即973M。其实就是年轻代461M+老年代512M
0.0118345secs:本次GC花费的时间。
Times:user=0.00sys=0.00,real=0.01secs:本次GC的时间
4)JVM退出时的GC情况:

程序结束后,有些Log会打印出来,即第12行,在后续行中,这部分表示堆当前的内存使用情况:

具体如下:


二、运行jar文件前,我需要设置java虚拟机虚拟内存

有四个参数可以设置JVM内存:
-XmxJavaHeap最大值,默认值为物理内存的1/4,最佳设置值应该取决于物理内存大小和其他内存开销计算机的;
-Xms对于服务器端JVM来说,最好将JavaHeap初始化值-Xms和-Xmx设置为相同的值。开发机和测试机可以保持JVM默认值;-XmnJavaHeapYoung区域的大小。如果你不熟悉它,最好保持默认值;
-每个线程的堆栈大小。如果您不熟悉,最好保留默认值;
2.如何设置JVM内存分配:
(1)在命令提示符下启动并使用JVM时(仅对当前运行的类测试有效):
java-Xmx128m-Xms64m-Xmn32m-):
-vmargs
-Xms40m
-Xmx256m
-vmargs表示设置以下参数对于虚拟机可以修改参数值,或者-Xmn,-Xss,此外,还可以还要在中设置非堆内存,如:-XX:PermSize=56m、-XX:MaxPermSize。=128m。
这里设置的参数值可以通过如下配置显示在开发工具的状态栏中:
在eclipse根目录下创建文件选项文件内容为:。ui/perf/showHeapStatus=true
修改Eclipse根目录下的文件,在开头添加以下内容:
-debug
options
-vm

重新启动Eclipse,可以在下面的状态栏中看到更多的JVM信息。