96SEO 2026-02-20 01:12 20
Java8使用Metaspace(元空间)代替永久区#xff0c;对于64位平台#xff0c;为了压缩JVM对象中的_klass指针的大小#xff0c;引入了…

很多资料在介绍JDK命令行工具时并不是在Java8环境下因此还在使用过时的永久区系列的参数给一些读者造成困难。
Java8使用Metaspace(元空间)代替永久区对于64位平台为了压缩JVM对象中的_klass指针的大小引入了类指针压缩空间(Compressed
在JDK的开发包中除了大家熟知的java.exe和javac.exe外还有一系列辅助工具。
这些工具在JDk安装中。
如图
虽然乍看之下这些工作都是exe的可执行文件。
但事实上它们只是Java程序的一层包装其真正实现是在
sun.tools.jps.Jps命令是等价的即jps.exe只是这个命令的一层包装。
在学习以下命令之前不妨使用IDEA写个不会退出的小程序方便测试。
示例代码
java.text.SimpleDateFormat;import
命令jps用于列出java进程直接运行jps不加任何参数可以列出Java程序的进程ID以及Main函数等名称。
从这个输出中可以看到当前系统中共存在4个Java应用程序其中第一个输出jps就是jps命令本身这个更加证明此命令本质也是一个Java程序。
此外jps还提供了一系列参数来控制它的输出内容。
jstat是一个可以用于观察Java应用程序运行时信息的工具。
它的功能非常强大可以通过它查看堆信息的详细使用情况。
它的基本使用语法为
-class显示ClassLoader的相关信息。
-compiler显示JIT编译的相关信息。
-gc显示与GC相关的堆信息。
-gccapacity显示各个代的容量及使用情况。
-gccause显示垃圾收集相关信息(同-gcutil)同时显示最后一次或当前正在发生的垃圾收集的诱发原因。
-gcnew显示新生代信息。
-gcnewcapacity显示新生代大小与使用情况。
-gcold显示老年代与永久代的信息。
-gcoldcapacity显示老年代的大小。
-gcmetacapacity显示元空间的大小。
(在java8之前是使用-gcpermcapacity显示永久代的大小)-gcutil显示垃圾收集信息。
-printcompilation输出JIT编译的方法信息。
参数可以在周期性数据输出时输出多少行数据后跟着输出一个表头信息。
输出java进程13516的ClassLoader相关信息。
每秒钟统计一次信息一共输出2次
表示载入了类的数量Bytes表示载入类的合计大小(KB)Unloaded
表示卸载类的数量第2个Bytes表示卸载类的大小Time表示在加载和卸载类上所花的时间。
表示编译任务执行的次数Failed表示编译失败的次数Invalid
S0Cs0(from)的大小(KB)。
S1Cs1(from)的大小(KB)。
S0Us0(from)已使用的空间(KB)。
S1Us1(from)已经使用的空间(KB)ECeden区的大小(KB)EUeden区已经使用的空间(KB)OC老年代大小(KB)OU老年代已经使用的空间(KB)MC元空间的大小(Metaspace)(KB)MU元空间已使用大小(KB)CCSC压缩类空间大小(compressed
space)(KB)CCSU压缩类空间已使用大小(KB)YGC新生代gc次数YGCT新生代gc耗时(秒)FGCFull
下例显示了各个代的信息与-gc相比它不仅输出了各个代的当前大小也包含了各个代的最大值和最小值。
NGCMN新生代最小(初始化)容量(字节)NGCMX新生代最大容量(字节)NGC当前新生代容量(字节)OGCMN老年代最小容量(字节)OGCMX老年代最大容量(字节)MCMNmetaspace(元空间)中初始化(最小)的大小
(字节)CCSMN最小压缩类空间大小(字节)CCSMX最大压缩类空间大小(字节)
TT新生代对象晋升到老年代对象的年龄。
MTT新生代对象晋升到老年代对象的年龄最大值。
DSS所需的survivor区大小。
S0CMXs0区的最大值(KB)。
S1CMXs1区的最大值(KB)。
ECMXeden区的最大值(KB)。
-gcmetacapacity与-gcpermcapacity
用于展示永久区的使用情况但是在Java8环境下使用会报错找不到。
因为java8的永久区被元空间取而代之。
所以要使用
区使用的百分比。
Oold区使用的百分比。
M元空间使用的百分比。
CCS压缩类空间使用的百分比。
可以用来查看正在运行的Java运行程序的扩展参数甚至支持在运行时修改部分参数。
它的基本语法为
设置指定java虚拟机的参数的值。
在很多情况下Java应用程序不会指定所有的JVM参数。
而此时开发人员可能不知道某一个具体的JVM参数的默认值。
有了
1)下例显示了新生代对象晋升到老年代对象的最大年龄。
在应用程序运行时并没有指定这个参数但是通过jinfo可以查看这个参数的当前的值。
3)修改部分参数的值下面是对PrintGCDetails参数的修改。
下例使用jmap生成PID为9440的Java应用程序的对象统计信息并输入到
本例中将应用程序的堆快照输出到E盘的heap.bin文件中。
之后可以通过多种工具分析文件。
比如下文中提到的jhat工具。
也可以使用
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback