千家信息网

JVM命令行的标志介绍

发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,本篇内容介绍了"JVM命令行的标志介绍"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.Disabl
千家信息网最后更新 2025年01月16日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/OracleVM除外。查明一个标志是否被支持的最好方法是试用它,看它是否正常工作。倘若这些标志在技术上是不支持的,那么,使用它们您要承担全部责任。如果这些标志中的任何一个使您的代码、您的数据、您的服务器或您的一切消失得无影无踪,我、Sun/OracleIBM都将不负责任。为以防万一,建议先在虚拟(非常生产)环境中实验。

  在这个时刻您想要的是,在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是一个很有用的一级诊断使用程序。该标志有三个子标志:gcclassjni

  开发人员尝试寻找是否 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安全错误 数据库的锁怎样保障安全 服务器光盘安装操作系统 中央网络安全下达的文件 万网服务器价格 内蒙古数据库安全箱服务费 服务器修改bmc地址会不会重启 方舟最多人的非官方服务器 海淀区软件开发售后保障 喜英网络技术有限公司 软件开发人力外包有哪些 定制产品用别人服务器安全吗 如何下载及利用geo数据库 南邮数据库系统第一章答案 服务器上绿色文件 网络技术入门经典关键词抓取 绝地求生2无法登录服务器怎么弄 计算机应用跟软件开发 葫芦娃网络安全热点 传奇数据库修改问题 洛阳软件开发前景如何 海南海宝联互联网科技有限公司 我的世界服务器管理员如何回档 网络安全意识形态资料 当当商品数据接口软件开发 js 获取服务器数据 儿童网络安全知识教案 wind数据库免费的吗 招聘网络安全与管理专业 高端app软件开发报价 网络安全技术大致包括 北邮数据库应用技术阶段作业四
0