Java|Java:java内存分析时,要考虑哪些因素?( 二 )


监控执行的操作或方法
Java内存分析的一部分是监视应用程序中执行的操作或方法 。 开发人员通常使用基于事件的测量方法来分析各个方法的执行 。 这是在每个方法调用的开始和结束时使用日志和时间戳完成的 。 结果是调用单个方法的总次数以及每次调用的确切执行时间 。
JVM工具接口(JVM TI)是Java运行时中的一个特殊回调 , 在方法执行的开始和结束时调用 。 然而 , 此过程的开销很高 , 可能会影响应用程序的运行时行为 。 因此 , 寻找使用字节码检测的现代性能测量方法 。 它减少了开销 , 提高了应用效率 。
检查应用程序使用或加载的内存类/库
当构建一个复杂的Java应用程序时 , 预计某些事情最终会失败 , 或者会遇到OutOfMemoryException 。 内存问题总是带来新的和意想不到的挑战 。 因此 , 内存分析的最佳实践之一是检查应用程序正在使用或正在加载的内存类和库 。

监视Java线程
活动Java线程是另一个要监视的JVM内存度量 。 在深入研究线程背后的概念之前 , 这里有两种类型的Java线程需要研究:
l 守护线程——这是用户线程的服务提供者 。 JVM创建守护进程线程 。 守护进程线程的生命取决于用户线程 , 因此它们的优先级较低 。 它们执行垃圾收集和其他内务处理过程 。
l 用户线程——由应用程序或用户创建 。 这些是高优先级线程 , JVM将等待它们完成任务 。
线程可能会创建或破坏应用程序 。 如果线程数太多 , 会降低响应时间 。 这意味着线程数越高 , 处理器利用率越高 。 这背后的原因是每个线程所需的处理能力 。 要在线程之间频繁切换 , 需要处理能力 。
当预期有大量并发请求时 , 使用的线程数会增加 。 需要注意的是 , 这将减少应用程序用户的响应时间 。
你可以相应地管理线程 。 例如 , 线程尤其适用于处理并发任务 , 如获取数据或将数据写入数据库 。 开发人员使用线程来提高应用程序的性能 , 特别是当他们有I/O时 。 但是 , 请注意 , 当有大量线程执行并发工作时 , 问题很普遍 。
另一个需要考虑的重要问题是线程开销 , 这会导致应用程序的总体速度下降 。 创建和销毁线程时会发生这种情况 。 此外 , 在保存和恢复线程状态时会发生开销 。 由于硬件资源有限且共享 , 因此存在开销 。
使用Retrace进行JMX监视
Java是一种健壮的编程语言 , 它提供了处理内存消耗的工具和功能 。 此外 , 有许多方法可以执行Java内存分析 。 你可以选择更多以内存为中心的评测工具 。 一些工具专门用于Java内存泄漏分析或具有严格功能的通用APM , 以监控应用程序 。
【Java|Java:java内存分析时,要考虑哪些因素?】Java管理扩展(JMX)是一种用于监视和管理Java应用程序的Java技术 。 它在开发人员中得到广泛接受 , 因为它支持通用管理系统 。 此外 , 它在应用程序需要注意时提供通知 。 此外 , 它还会更改应用程序的状态 , 以提供问题的解决方案 。 JMX是一个强大的工具 。 当JMX与Retrace配对时 , 它会显示应用程序的整体性能指标 。