软件构造Lab5_3.3

一、设置JVM参数

在上方的Run-Run Configurations-Arguments中可以设计JVM参数。
可用-verbose:gc和-XX:+PrintGCDetails来查看程序的GC情况和堆占用情况,如下:
GC情况

还可设计其他参数如:
(1)-Xms20M
表示设置JVM启动内存的最小值为20M,必须以M为单位
(2)-Xmx20M
表示设置JVM启动内存的最大值为20M,必须以M为单位。将-Xmx和-Xms设置为一样可以避免JVM内存自动扩展。大的项目-Xmx和-Xms一般都要设置到10G、20G甚至还要高
(3)-Xss128k
表示可以设置虚拟机栈的大小为128k
(4)-Xoss128k
表示设置本地方法栈的大小为128k。不过HotSpot并不区分虚拟机栈和本地方法栈,因此对于HotSpot来说这个参数是无效的
(5)-XX:PermSize=10M
表示JVM初始分配的永久代的容量,必须以M为单位
(6)-XX:MaxPermSize=10M
表示JVM允许分配的永久代的最大容量,必须以M为单位,大部分情况下这个参数默认为64M
(7)-Xnoclassgc
表示关闭JVM对类的垃圾回收
(8)-XX:+TraceClassLoading
表示查看类的加载信息
(9)-XX:+TraceClassUnLoading
表示查看类的卸载信息
(10)-XX:NewRatio=4
表示设置年轻代:老年代的大小比值为1:4,这意味着年轻代占整个堆的1/5
(11)-XX:SurvivorRatio=8
表示设置2个Survivor区:1个Eden区的大小比值为2:8,这意味着Survivor区占整个年轻代的1/5,这个参数默认为8
(12)-Xmn20M
表示设置年轻代的大小为20M
(13)-XX:+HeapDumpOnOutOfMemoryError
表示可以让虚拟机在出现内存溢出异常时Dump出当前的堆内存转储快照
(14)-XX:+UseG1GC
表示让JVM使用G1垃圾收集器
(15)-XX:+PrintGC
表示在控制台上打印出GC信息
(16)-XX:PretenureSizeThreshold=3145728
表示对象大于3145728(3M)时直接进入老年代分配,这里只能以字节作为单位
(17)-XX:MaxTenuringThreshold=1
表示对象年龄大于1,自动进入老年代
(18)-XX:CompileThreshold=1000
表示一个方法被调用1000次之后,会被认为是热点代码,并触发即时编译
(19)-XX:+PrintHeapAtGC
表示可以看到每次GC前后堆内存布局
(20)-XX:+PrintTLAB
表示可以看到TLAB的使用情况
(21)-XX:+UseSpining
开启自旋锁
(22)-XX:PreBlockSpin
更改自旋锁的自旋次数,使用这个参数必须先开启自旋锁

二、JDK的使用

打开cmd到Java/jdk/bin目录下,运行如下命令即可使用各个jdk功能。

1.用jps -l命令查看进程号
jps

2.使用jstat -gc 1820 5000 10查看:
其中1820是用jps -l命令查看的applications.Application的进程号
5000和10代表每5000ms查看一次,共十次
jstat -gc
S0C:年轻代中第一个存活区的大小
S1C:年轻代中第二个存活区的大小
S0U:年轻代中第一个存活区已使用的空间 (KB)
S1U:年轻代中第二个存活区已使用的空间 (KB)
EC: Edem 区大小
EU: 年轻代中 Edem 区已使用的空间 (KB)
OC: 老年代大小
OU: 老年代已使用的空间 (KB)
MC: 持久代大小
MU: 持久代已使用的空间 (KB)
YGC: 从应用程序启动到采样时 young gc 的次数
YGCT: 从应用程序启动到采样时 young gc 的所用的时间(s)
FGC: 从应用程序启动到采样时 full gc 的次数
FGCT: 从应用程序启动到采样时 full gc 的所用的时间
GCT: 从应用程序启动到采样时整个 gc 所用的时间

3.使用jstat -gcutil 1820 5000 10查看
jstat -gcutil

S0 — Heap 上的 Survivor space 0 区已使用空间的百分比
S1 — Heap 上的 Survivor space 1 区已使用空间的百分比
E — Heap 上的 Eden space 区已使用空间的百分比
O — Heap 上的 Old space 区已使用空间的百分比
M — Perm space 区已使用空间的百分比
YGC — 从应用程序启动到采样时发生 Young GC 的次数
YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)
FGC — 从应用程序启动到采样时发生Full GC 的次数
FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)
GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)

4.使用 jmap -heap 命令行工具查询程序的内存使用信息,包括虚拟机当前所使用的 GC 策略、heap 的配置情况(各区域的大小等)、heap 的使用情况统计:
使用命令jmap -heap 1820查看
在这里插入图片描述
在这里插入图片描述

使用jmap -histo命令行查看当前装载进内存的各类的实例数目及内存占用情况:
在这里插入图片描述
5.使用 jmap -clstats 命令行工具查看 class loader 的统计信息,即程序执行期间装载的 class 和 method 相关信息:
jmap -clstats

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值