当前位置:首页 > 经验 >

bin4一般是什么参数(怎么鉴定bin407)

来源:原点资讯(www.yd166.com)时间:2022-10-27 10:47:50作者:YD166手机阅读>>

作者:qbit snap

链接:https://segmentfault.com/a/1190000022603726

前言

  • JVM 的参数有好几百个,听着有点吓人,好在最常用的参数只有两个,其他绝大多数参数都无需调整。可以参考廖雪峰的文章:

-Xms8g -Xmx8g

  • Oracle 对 JVM 参数的说明文档(https://www.oracle.com/Java/technologies/javase/vmoptions-jsp.html)

bin4一般是什么参数,怎么鉴定bin407(1)

Client/Server

  • JVM 有两种运行模式 Server 与 Client。
  • Client 模式启动速度较快,Server 模式启动较慢。
  • 启动进入稳定期长期运行之后 Server 模式的程序运行速度比 Client 要快很多。
  • 查看当前虚拟机处于哪种模式

λ java -version java version "1.8.0_162" Java(TM) SE Runtime Environment (build 1.8.0_162-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

  • 64 位 jdk 无法切换到 Clinet 模式

打印 JVM 参数

  • 打印 JVM 参数初始值

λjava-XX: PrintFlagsInitial

  • 打印 JVM 参数最终值

λjava-XX: PrintFlagsFinal2>nul

  • 打印被修改过的 JVM 参数

# 输出经由人工换行 λ java -XX: PrintCommandLineFlags 2> nul -XX:InitialHeapSize=266579392 -XX:MaxHeapSize=4265270272 -XX: PrintCommandLineFlags -XX: UseCompressedClassPointers -XX: UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX: UseParallelGC

jvm 内存模型

  • 图片来源于网络

bin4一般是什么参数,怎么鉴定bin407(2)

常用参数

-Xms: 初始堆大小 -Xmx: 最大堆大小 -XX:NewSize: 年轻代初始化内存的大小(注意:该值需要小于-Xms的值) -XX:MaxnewSize: 年轻代可被分配的内存的最大上限(注意:该值需要小于-Xmx的值) 从 JKD1.4 开始,MaxnewSize 是通过 NewRatio 计算出来的 -Xmn: 对-XX:newSize、-XX:MaxnewSize两个参数同时进行配置(JDK1.4之后才有该参数) 官方推荐为对大小的 3/8,即 1/4 到 1/3 之间 -XX:NewRatio: 设置老年代和年轻代的比值 若 -Xmn 已指定,则 OldSize = HeapSize - NewSize,无需再按比例计算。 例如 NewRatio 为 3,表示 老年代/年轻代 = 3,年轻代占整个堆内存大小的 1/4

  • 对于年轻代的堆内存大小,默认情况下是通过 NewRatio(2) 计算出来的,即占用 1/3;在配置 Xmn 后,会覆盖默认的通过 NewRatio 计算出来的年轻代堆大小值

# 摘录的部分的输出行 # MaxHeapSize/MaxNewSize = 4265607168/1421869056 = 3 λ java -XX: PrintFlagsFinal uintx NewRatio = 2 {product} uintx MaxNewSize := 1421869056 {product} uintx MaxHeapSize := 4265607168 {product}

  • 一般 -Xms、-Xmx 两个参数会配置相同的值(优点:能够在Java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源)。

CompressedOops

压缩普通对象指针

compressed ordinary object pointers,压缩普通对象指针

(0, 2GB] Compressed Oops mode: 32-bit [2GB, 26GB] Compressed Oops mode: Zero based,26G不是确切值,视系统而定 (26GB, 32GB) Compressed Oops mode: Non-zero disjoint base,32G不是确切值,视系统而定 [32GB, ) CompressedOops 失效,32G不是确切值,视系统而定

bin4一般是什么参数,怎么鉴定bin407(3)

检查 CompressedOops 阈值

  • 下面测试的粒度为 GB,也可以到 MB

# CompressedOops 阈值 # 32 G,false 表示超过了阈值 $ ./jdk/bin/java -Xmx32g -XX: PrintFlagsFinal 2> /dev/null | grep UseCompressedOops bool UseCompressedOops = false {lp64_product} # 31G,true 表示在阈值之内 $ ./jdk/bin/java -Xmx31g -XX: PrintFlagsFinal 2> /dev/null | grep UseCompressedOops bool UseCompressedOops := true {lp64_product}

# zero based Compressed Oops 阈值 # 31G,Non-zero ./jdk/bin/java -server -Xms31G -Xmx31G -XX: UnlockDiagnosticVMOptions -Xlog:gc heap coops=info -version [0.134s][info][gc,heap,coops] Heap address: 0x0000001000800000, size: 31744 MB, Compressed Oops mode: Non-zero disjoint base: 0x0000001000000000, Oop shift amount: 3 openjdk 13.0.2 2020-01-14 OpenJDK Runtime Environment AdoptOpenJDK (build 13.0.2 8) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 13.0.2 8, mixed mode, sharing) # 30G,Zero based ./jdk/bin/java -server -Xms30G -Xmx30G -XX: UnlockDiagnosticVMOptions -Xlog:gc heap coops=info -version [0.128s][info][gc,heap,coops] Heap address: 0x0000000080000000, size: 30720 MB, Compressed Oops mode: Zero based, Oop shift amount: 3 openjdk version "13.0.1" 2019-10-15 OpenJDK Runtime Environment AdoptOpenJDK (build 13.0.1 9) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 13.0.1 9, mixed mode, sharing)

测试案例

  • Why 35GB Heap is Less Than 32GB – Java JVM Memory Oddities

这个案例中,分配 32g比31g能创建的对象少了50% 587889429/385481085≈1.525

bin4一般是什么参数,怎么鉴定bin407(4)

  • Going over Xmx32G heap boundary means you will have less memory available

这个案例中,48g才基本达到31g的效果

bin4一般是什么参数,怎么鉴定bin407(5)

本文出自

栏目热文

bin28和bin128哪个好(奔富bin28真实成交价)

bin28和bin128哪个好(奔富bin28真实成交价)

奔富葡萄酒在国际市场上享有盛名,优质的品质及独特的风格是奔富葡萄酒深受消费者青睐的主要因素之一。奔富旗下酒款繁多,以Bi...

2022-10-27 10:39:51查看全文 >>

bin 138和bin 128哪个贵(bin8和bin28价格)

bin 138和bin 128哪个贵(bin8和bin28价格)

文:王智慧 | 葡萄酒在线奔富(Penfolds),对,就是那个被山寨泛滥到都快忘了他本家酒的长相、名字和真实价格的爆红...

2022-10-27 10:10:08查看全文 >>

bin2和bin28的区别(bin28和bin8哪个档次高)

bin2和bin28的区别(bin28和bin8哪个档次高)

本文作者:silencesky这个系列文章的时间跨度是很大的,第一篇已经是去年的事情了,楼主也是想到哪里写到哪里,挖坑无...

2022-10-27 10:05:27查看全文 >>

芯片bin1 bin2如何区别(芯片怎么识别0和1)

芯片bin1 bin2如何区别(芯片怎么识别0和1)

今年的iPhone 14、iPhone 14 Plus不仅外观设计与iPhone 13一样,就连性能也几乎相同,两款机型...

2022-10-27 09:58:15查看全文 >>

bin407有年份区分吗(bin407各年份价格)

bin407有年份区分吗(bin407各年份价格)

今日荐酒:奔富 Bin407 赤霞珠干红葡萄酒Penfold's Bin 407 Cabernet Sauvignon ...

2022-10-27 10:22:25查看全文 >>

去茶卡盐湖住在哪儿比较划算(去茶卡盐湖住宿哪里便宜)

去茶卡盐湖住在哪儿比较划算(去茶卡盐湖住宿哪里便宜)

7月,随着茶卡盐湖旅游旺季的到来,茶卡镇上的民宿也火了起来。很多游客会问,他们的民宿有什么特点,价格怎样?走,和我一起去...

2022-10-27 10:11:19查看全文 >>

茶卡盐湖在哪住好(茶卡盐湖周围哪里合适住宿)

茶卡盐湖在哪住好(茶卡盐湖周围哪里合适住宿)

近日,有一段小视频和文字在朋友圈疯狂转发:供不应求的酒店,使得黑马河边出现了“天价牛棚”宾馆。588元一间双人标间。来感...

2022-10-27 10:34:29查看全文 >>

茶卡盐湖住哪里方便(茶卡盐湖游玩住哪里好)

茶卡盐湖住哪里方便(茶卡盐湖游玩住哪里好)

之前也讲过,在国内的西北地区我住过很多种有意思的酒店。除了传统的小旅馆之外,我还住过蒙古包、玻璃屋、景区酒店、老干部酒店...

2022-10-27 10:19:03查看全文 >>

茶卡盐湖附近哪里可以住宿(茶卡盐湖酒店住宿攻略)

茶卡盐湖附近哪里可以住宿(茶卡盐湖酒店住宿攻略)

ID.6 CROZZ这款车非常的大气上档次,我爸妈也非常喜欢,空间布局合理,安全性高,特别适合五口之家自驾旅游驾驶,选择...

2022-10-27 10:17:31查看全文 >>

茶卡盐湖有没有住宿的地方(茶卡盐湖住宿推荐)

茶卡盐湖有没有住宿的地方(茶卡盐湖住宿推荐)

茶卡镇是全国第一批特色小镇之一。这几年很多朋友到茶卡旅游,喜欢住到茶卡村里的家庭宾馆。这里,除了价格实惠,还可以体验一把...

2022-10-27 10:35:55查看全文 >>

文档排行