阿里巴巴加入 Eclipse 基金会,开源一站式 Java 应用诊断平台 -- Eclipse Jifa

简介: ### 前言 Java 作为一门主流的编程语言, 在业界拥有着丰富的工具帮助开发者排查与定位研发过程中遇到的各类疑难问题。早在多年前, 阿里巴巴就研发了一款 Java 应用的在线问题诊断平台 -- ZProfiler, 致力于帮助研发同学快速定位生产环境中频繁遇到的 Java 问题, 例如 OOM 异常。 在内部, ZProfiler 平台被研发同学广泛使用, 协助他们解决了大量的生产问题

前言

Java 作为一门主流的编程语言, 在业界拥有着丰富的工具帮助开发者排查与定位研发过程中遇到的各类疑难问题。早在多年前, 阿里巴巴就研发了一款 Java 应用的在线问题诊断平台 -- ZProfiler, 致力于帮助研发同学快速定位生产环境中频繁遇到的 Java 问题, 例如 OOM 异常。

在内部, ZProfiler 平台被研发同学广泛使用, 协助他们解决了大量的生产问题。 如今, 为了让这款产品能够帮助到更多的 Java 开发者, 同时让这个项目能够得到更好的发展, 我们决定将其开源。

在今年年初, 阿里巴巴正式加入了 Eclipse 基金会, 并在社区中建立了 Eclipse Jifa 项目, 目前项目处在孵化阶段。

项目介绍

作为 ZProfiler 的开源版本, Eclipse Jifa 使用 Vue 和 Vert.x 作为其主要的前后端开发框架, 是一个典型的 web 应用程序。

在架构设计上, 我们将 Eclipse Jifa 划分为 Master / Worker 两块模块, 其中 Worker 负责具体的任务分析工作, 而 Master 则充当管理的角色, 让整套系统具备一定的水平扩展能力。我们也会支持 Worker 单独部署的能力以适用于简单场景。

1.png

用户可以很方便地将 Eclipse Jifa 部署在自己的应用环境中, 通过 Eclise Jifa 提供的文件传输能力将相关文件上传到平台中, 并使用浏览器进行相关的问题分析工作。

2.png

目前 Eclipse Jifa 基于 Eclipse MAT 实现了一系列常用的 Heap Dump 的分析服务, 如:

  • 支配树分析

支配树是图论中的一个重要概念, 被应用与多个领域, 比如编译器中。而在内存分析中, 支配树可以用来说明回> 收关系, 举一个例子: 当对象 A 能够被 GC 回收时, 对象 B 也一定能被回收, 则可以得出对象 A 支配对象 B 的> 结论。
注意 A 和 B 不一定有直接的引用关系。
通过支配树视图, 在某些情况下可以快速定位到一些"热"对象, 比如用于缓存的一些数据结构等。

3.png

  • 类加载器视图

类加载器视图会列出应用当前使用到的所有类加载, 以及每个类加载器加载类的情况: 加载了哪些类, 这些类有多少实例等信息。通常用于排查 Metaspace 使用过多的问题,根据经验,当 Groovy 类加载器以及反射类加载器数量较多时,Metaspace 碎片化成会比较严重, 不过堆分析暂时没有办法给出具体的碎片数据, 但是用户可以通过数量来做一定的辅助分析。

4.png

  • OQL

OQL (Object Query Language) 是 Eclipse MAT 内置的对象查询语言, 用户可以通过它实现各类查询操作

5.png

结语

相信有许多技术公司在自己内部环境也需要这样一个平台, 来支撑研发同学的问题排查工作, 提高生产环境效率。在此之前, Netfix 向我们表达了对该项目的兴趣, 他们内部也曾做过类似的工作, 双方做了一次深入的项目分享, 目前也在 Eclipse Jifa 项目上进行一些合作尝试。我们欢迎广大开发者们参与到这个项目中来, 帮助这个项目顺利孵化。

最后, 我们会持续地将更丰富的特性加入到 Eclipse Jifa 中, 比如线程分析等线上环境必备的 Java 应用分析功能, 同时会在扩展性和维护性上做一系列优化工作, 方便用户进行快速定制。

更多内容 (如何使用、贡献等) 可以参考: https://github.com/eclipse/jifa

相关文章
|
3月前
|
人工智能 算法 Java
Java与AI驱动区块链:构建智能合约与去中心化AI应用
区块链技术和人工智能的融合正在开创去中心化智能应用的新纪元。本文深入探讨如何使用Java构建AI驱动的区块链应用,涵盖智能合约开发、去中心化AI模型训练与推理、数据隐私保护以及通证经济激励等核心主题。我们将完整展示从区块链基础集成、智能合约编写、AI模型上链到去中心化应用(DApp)开发的全流程,为构建下一代可信、透明的智能去中心化系统提供完整技术方案。
340 3
|
3月前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
182 8
|
4月前
|
人工智能 Java API
Java与大模型集成实战:构建智能Java应用的新范式
随着大型语言模型(LLM)的API化,将其强大的自然语言处理能力集成到现有Java应用中已成为提升应用智能水平的关键路径。本文旨在为Java开发者提供一份实用的集成指南。我们将深入探讨如何使用Spring Boot 3框架,通过HTTP客户端与OpenAI GPT(或兼容API)进行高效、安全的交互。内容涵盖项目依赖配置、异步非阻塞的API调用、请求与响应的结构化处理、异常管理以及一些面向生产环境的最佳实践,并附带完整的代码示例,助您快速将AI能力融入Java生态。
767 12
|
4月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
4月前
|
安全 Java API
Java SE 与 Java EE 区别解析及应用场景对比
在Java编程世界中,Java SE(Java Standard Edition)和Java EE(Java Enterprise Edition)是两个重要的平台版本,它们各自有着独特的定位和应用场景。理解它们之间的差异,对于开发者选择合适的技术栈进行项目开发至关重要。
607 1
|
4月前
|
人工智能 Java 开发者
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
JManus是阿里开源的Java版OpenManus,基于Spring AI Alibaba框架,助力Java开发者便捷应用AI技术。支持多Agent框架、网页配置、MCP协议及PLAN-ACT模式,可集成多模型,适配阿里云百炼平台与本地ollama。提供Docker与源码部署方式,具备无限上下文处理能力,适用于复杂AI场景。当前仍在完善模型配置等功能,欢迎参与开源共建。
2114 58
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
|
3月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
236 1
|
3月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
250 1
|
4月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
209 0

推荐镜像

更多