千家信息网

JVM命令行的标志介绍

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容介绍了"JVM命令行的标志介绍"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.Disabl
千家信息网最后更新 2026年10月31日JVM命令行的标志介绍

本篇内容介绍了"JVM命令行的标志介绍"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

  1.DisableExplicitGC

  只要跨代码快速运行grep,就会发现清单1所示的问题--原始Java性能反模式:

  清单 1. System.gc();

  // We just released a bunch of objects, so tell the stupid // garbage collector to collect them already! System.gc();

  显式垃圾收集是一个非常糟糕的主意--就像将您和一个疯狂的斗牛犬锁在一个电话亭里。尽管调用的语法是依赖实现的,但如果您的JVM正在运行一个分代的垃圾回收器(大多数是)System.gc();强迫VM执行一个堆的"全部清扫",虽然有的没有必要。全部清扫比一个常规GC操作要昂贵好几个数量级,这只是个简单数学问题。

  您可以不把我的话放在心上--Sun的工程师为这个特殊的人工错误提供一个JVM标志;-XX:+DisableExplicitGC标志自动将System.gc()调用转换成一个空操作,为您提供运行代码的机会,您自己看看System.gc()对于整个JVM执行有害还是有利。

  2.HeapDumpOnOutOfMemoryError

  并不是任何VM都支持所有命令行标志,Sun/Oracle的VM除外。查明一个标志是否被支持的最好方法是试用它,看它是否正常工作。倘若这些标志在技术上是不支持的,那么,使用它们您要承担全部责任。如果这些标志中的任何一个使您的代码、您的数据、您的服务器或您的一切消失得无影无踪,我、Sun/Oracle和IBM都将不负责任。为以防万一,建议先在虚拟(非常生产)环境中实验。

  在这个时刻您想要的是,在JVM消亡之际捕获堆的一个快照--正好-XX:+HeapDumpOnOutOfMemoryError命令可以完成这一操作。

  运行该命令通知JVM拍摄一个"堆转储快照",并将其保存在一个文件中以便处理,通常使用jhat实用工具。您可以使用相应的-XX:HeapDumpPath标志指定到保存文件的实际路径。(不管文件保存在哪,务必确保文件系统和/或Java流程必须要有权限配置,可以在其中写入。)

  3.bootclasspath

  定期将一个类放入类路径是很有帮助的,这类路径与库存JRE附带的类路径或者以某种方式扩展的JRE类路径略有不同。。如果您想要扩展JRE,那么您定制的实现必须可以使用引导程序ClassLoader,该引导程序可以加载rt.jar中的 java.lang.Object及其所有相关文件。

  尽管您可以非法打开rt.jar并将您的定制实现或新数据包移入其中,但从技术上您就违反了您下载JDK时同意的协议了。

  相反,使用JVM自己的-Xbootclasspath选项,以及皮肤-Xbootclasspath/p和-Xbootclasspath/a。

  -Xbootclasspath使您可以设置完整的引导类路径(这通常包括一个对rt.jar的引用),以及一些其他JDK附带的(不是 rt.jar的一部分)JAR文件。-Xbootclasspath/p将值前置到现有bootclasspath中,并将 -Xbootclasspath/a附加到其中。

  例如,如果您修改了库中的java.lang.Integer,并将修改放在一个子路径mods下,那么-Xbootclasspath/amods参数将新Integer放在默认的参数前面。

  4.verbose

  对于虚拟的或任何类型的Java应用程序,-verbose是一个很有用的一级诊断使用程序。该标志有三个子标志:gc、class和jni。

  开发人员尝试寻找是否 JVM 垃圾收集器发生故障或者导致性能低下,通常首先要做的就是执行 gc。不幸的是,解释 gc 输出很麻烦 - 足够写一本书。更糟糕的是,在命令行中打印的输出在不同的 Java 版本中或者不在不同的 JVM 中会发生改变,这使得正确解释变得更难。

  一般来说,如果垃圾收集器是一个分代收集器(多数"企业级"VMs都是)。某种虚拟标志将会出现,来指出一个全部清扫GC通路;在Sun JVM中,标志在GC输出行的开始以"[FullGC…]"形式出现。

  想要诊断ClassLoader和/或不匹配的类冲突,class可以帮上大忙。它不仅报告类何时加载,还报告类从何处加载,包括到JAR的路径(如果来自JAR)。

  jni很少使用,除了使用JNI或本地库时。打开时,它将报告各种JNI事件,比如,本地库何时加载,方法何时弹回;再一次强调,在不同JVM版本中,输出会发生变化。

  5.Command-line-X

  -Xint,在解释模式下运行JVM(对于测试JIT编译器实际上是否对您的代码起作用或者验证是否JIT编译器中有一个bug,这都很有用)。

  -Xloggc:,和-verbose:gc做同样的事,但是记录一个文件而不输出到命令行窗口。

  JVM命令行选项时常发生变化,因此,定期查看是一个好主意。

"JVM命令行的标志介绍"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

标志 命令 路径 文件 输出 运行 不同 代码 垃圾 程序 并将 实际 报告 收集器 支持 解释 实用 糟糕 个子 主意 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳市人人互联网科技有限公司 广东猪兼强互联网科技有限公司 广州万易互联网科技有限公司 科技平台互联网 金诺互联网科技 金融科技与互联网金融 互联网科技视频 狮子座互联网科技有限公司 上海致骋互联网科技 互联网科技公司招聘 湖南洣水互联网科技有限公司扣款 隆华科技工业互联网 互联网科技公司有风险吗 区块链结合互联网科技 雨阳互联网卡科技有限公司 互联网科技包装股份有限公司上市 互联网科技手机排行榜 互联网科技手抄报图片 兰石爱特工业互联网科技分公司 北京瑞云互联网科技有限公司 互联网核心科技是什么 互联网与科技发展 互联网科技小贷 互联网科技素材视频竖屏 科技与互联网的利与弊 哈尔滨新华互联网科技学院 宝灵互联网科技有限公司 广州新华互联网科技学校电竞方面 保山互联网科技靠谱吗 青岛易易互联网科技
0