概述:复习的时候,学看一下。
命令:
-XX:+PrintCommandLineFlags
打开idea,配置jvm
把上面命令输入jvm options中即可。
举例代码
这个代码的解析,我上篇文章有写,这个跟本文没有任何关系:
pom文件:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.24</version>
</dependency>
示例代码:
package org.cyl.test04;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.resource.ClassPathResource;
import cn.hutool.core.lang.Console;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;
import cn.hutool.http.HttpUtil;
import java.io.File;
import java.util.List;
public class HutoolExample {
public static void main(String[] args) {
// 字符串操作
String str = "Hutool is a tool for Java.";
String result = StrUtil.sub(str, 0, 10);
Console.log("SubString: {}", result);
// 文件操作
File file = FileUtil.file("D:\\csdnwork\\test04\\src\\main\\resources\\static\\text.txt");
FileUtil.writeUtf8String("Hello Hutool", file);
// 集合操作
List<String> list1 = CollUtil.newArrayList("Hutool", "Java", "Tool");
List<String> list2 = CollUtil.newArrayList("Easy", "Effective");
List<String> newList = (List<String>) CollUtil.addAll(list1, list2);
Console.log("New List: {}", newList);
// 加密
String test = SecureUtil.md5("Hello Hutool");
Console.log("MD5: {}", test);
// 加密
RSA rsa = new RSA();
String originalText = "Hello Hutool";
byte[] encryptResult = rsa.encrypt(originalText, KeyType.PublicKey);
Console.log("Encrypted: {}", encryptResult);
// 解密
byte[] decryptResult = rsa.decrypt(encryptResult, KeyType.PrivateKey);
String decryptedText = new String(decryptResult);
Console.log("Decrypted: {}", decryptedText);
// 日期时间处理
String dateStr = "2022-01-22";
Console.log("Date: {}", DateUtil.parse(dateStr));
// 网络操作
String response = HttpUtil.get("https://www.baidu.com");
Console.log("HTTP Response: {}", response);
// 读取Classpath下的资源文件
ClassPathResource resource = new ClassPathResource("/static/index.html");
String content = resource.readStr(CharsetUtil.CHARSET_UTF_8);
Console.log("Resource Content: {}", content);
}
}
运行查看:
解析结果
我用的是graalvm17
-XX:ConcGCThreads=3 -XX:+EnableJVMCIProduct -XX:G1ConcRefinementThreads=13 -XX:GCDrainStackTargetSize=64 -XX:InitialHeapSize=264819584 -XX:MarkStackSize=4194304 -XX:MaxHeapSize=4237113344 -XX:MinHeapSize=6815736 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:ThreadPriorityPolicy=1 -XX:-UnlockExperimentalVMOptions -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC -XX:-UseLargePagesIndividualAllocation
-XX:ConcGCThreads=3
: 设置并发垃圾回收线程数为3。-XX:+EnableJVMCIProduct
: 启用JVMCI产品。-XX:G1ConcRefinementThreads=13
: 设置G1垃圾回收器的并发细化线程数为13。-XX:GCDrainStackTargetSize=64
: 设置GCDrain栈目标大小为64MB。-XX:InitialHeapSize=264819584
: 设置初始堆大小为264819584字节(约2.5GB)。-XX:MarkStackSize=4194304
: 设置标记栈大小为4194304字节(约4MB)。-XX:MaxHeapSize=4237113344
: 设置最大堆大小为4237113344字节(约4GB)。-XX:MinHeapSize=6815736
: 设置最小堆大小为6815736字节(约6.5MB)。-XX:+PrintCommandLineFlags
: 打印命令行标志。-XX:ReservedCodeCacheSize=251658240
: 设置保留代码缓存大小为251658240字节(约240MB)。-XX:+SegmentedCodeCache
: 启用分段代码缓存。-XX:ThreadPriorityPolicy=1
: 设置线程优先级策略为1。-XX:-UnlockExperimentalVMOptions
: 禁用实验性虚拟机选项。-XX:+UseCompressedClassPointers
: 使用压缩类指针。-XX:+UseCompressedOops
: 使用压缩普通对象指针。-XX:+UseG1GC
: 使用G1垃圾回收器。-XX:-UseLargePagesIndividualAllocation
: 禁用单独分配大页面。
查看G1垃圾回收器
都知道现在用的是G1收集器,命令。
-XX:+PrintCommandLineFlags -XX:+PrintGCDetails
打印一下GCDetails.
[0.006s][info ][gc] Using G1
:表示正在使用G1垃圾收集器。[0.007s][info ][gc,init] Version: 17.0.9+11-LTS-jvmci-23.0-b21 (release)
:表示G1垃圾收集器的初始版本号为17.0.9+11-LTS-jvmci-23.0-b21。[0.007s][info ][gc,init] CPUs: 16 total, 16 available
:表示总共有16个CPU核心可用。[0.007s][info ][gc,init] Memory: 16163M
:表示JVM的总内存为16163兆字节(MB)。[0.007s][info ][gc,init] Large Page Support: Disabled
:表示不支持大页(Large Page)。[0.007s][info ][gc,init] NUMA Support: Disabled
:表示不支持NUMA(Non-Uniform Memory Access,非一致内存访问)。[0.007s][info ][gc,init] Compressed Oops: Enabled (Zero based)
:表示启用了压缩对象指针(Compressed Object Pointer),并且是基于零的索引。[0.007s][info ][gc,init] Heap Region Size: 2M
:表示垃圾回收的一块区域的大小为2兆字节(MB)。[0.007s][info ][gc,init] Heap Min Capacity: 8M
:表示堆的最小容量为8兆字节(MB)。[0.007s][info ][gc,init] Heap Initial Capacity: 254M
:表示堆的初始容量为254兆字节(MB)。[0.007s][info ][gc,init] Heap Max Capacity: 4042M
:表示堆的最大容量为4042兆字节(MB)。[0.007s][info ][gc,init] Pre-touch: Disabled
:表示禁用预触摸(Pre-touch)。[0.007s][info ][gc,init] Parallel Workers: 13
:表示并行工作线程的数量为13。[0.007s][info ][gc,init] Concurrent Workers: 3
:表示并发工作线程的数量为3。[0.007s][info ][gc,init] Concurrent Refinement Workers: 13
:表示并发整理工作线程的数量为13。[0.007s][info ][gc,init] Periodic GC: Disabled
:表示禁用周期性垃圾收集(Periodic Garbage Collection)。[0.015s][info ][gc,metaspace] CDS archive(s) mapped at: [0x0000018e47000000-0x0000018e47bd0000-0x0000018e47bd0000), size 12386304, SharedBaseAddress: 0x0000018e47000000, ArchiveRelocationMode: 1.
:表示CDS归档文件映射在地址范围[0x0000018e47000000-0x0000018e47bd0000-0x0000018e47bd0000),大小为12386304字节,共享基地址为0x0000018e47000000,归档重定位模式为1。[0.015s][info ][gc,metaspace] Compressed class space mapped at: 0x0000018e48000000-0x0000018e88000000, reserved size: 1073741824
:表示压缩类空间映射在地址范围[0x0000018e48000000-0x0000018e88000000),保留大小为1GB。[0.015s][info ][gc,metaspace] Narrow klass base: 0x0000018e47000000, Narrow klass shift: 0, Narrow klass range: 0x100000000
:表示窄类(Narrow Class)的基址为0x0000018e47000000,移位量为0,范围为从0x100000000到最大值。