You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot Actuator为何未显示heapdump选项?

Spring Boot Actuator端点列表缺失heapdump问题排查与解决

核心原因

heapdump是Spring Boot Actuator提供的条件化注册端点,只有满足运行环境要求、配置开启、权限允许的前提下才会出现在暴露端点列表中,缺失通常由以下几类原因导致:

  • 运行环境不兼容:heapdump端点仅支持HotSpot系JVM(Oracle JDK、OpenJDK、Amazon Corretto、Alibaba Dragonwell等基于HotSpot开发的JDK均支持),如果使用OpenJ9、GraalVM Native Image、Android Runtime等非HotSpot运行环境,端点不会自动注册。
  • 端点未显式启用:如果项目全局配置将所有Actuator端点默认设为关闭状态,仅配置web暴露规则不会自动开启heapdump端点。
  • 配置未生效:web暴露配置被其他配置源(配置中心、外部配置文件、启动参数)覆盖,或配置书写存在多余空格、配置了exclude规则排除heapdump,导致规则未加载。
  • 访问权限过滤:如果集成了Spring Security、Shiro等安全框架,Actuator会根据当前访问用户的权限过滤返回的端点列表,匿名访问时仅返回放开匿名权限的端点(即你当前看到的health、info两个默认放开匿名访问的端点)。
  • 运行权限不足:JVM开启了SecurityManager且应用进程未获取堆转储操作的对应权限,端点会因无法执行操作自动跳过注册。

解决步骤

  1. 确认JVM类型
    启动应用后通过任意方式打印JVM名称校验:
    // 可临时加在启动类main方法中打印
    System.out.println("当前JVM类型:" + System.getProperty("java.vm.name"));
    
    输出结果不包含HotSpot字样的话,属于环境不兼容,更换为HotSpot系JDK即可解决。
  2. 显式开启端点并校验配置
    在application.properties中补充显式启用配置,确认暴露规则书写无多余字符,同时移除排除heapdump的配置:
    # 显式启用heapdump端点
    management.endpoint.heapdump.enabled=true
    # 暴露所有web端点,注意*前后不要加空格
    management.endpoints.web.exposure.include=*
    # 确认不存在如下排除配置,如有则删除
    # management.endpoints.web.exposure.exclude=heapdump
    
    如果项目使用了配置中心,需要同步检查配置中心的对应配置是否覆盖了本地值,可通过访问/actuator/configprops端点查看WebEndpointProperties的实际加载值确认配置生效。
  3. 校验安全框架权限规则
    临时关闭Actuator权限校验测试是否为权限过滤问题:
    # Spring Boot 2.x版本
    management.security.enabled=false
    # Spring Boot 3.x版本
    management.endpoints.web.security.enabled=false
    
    重启后如果能看到heapdump端点,说明是安全规则拦截导致,调整安全框架的拦截规则,给Actuator端点路径分配对应访问权限即可,以Spring Security为例,可添加独立的Actuator安全链:
    @Bean
    public SecurityFilterChain actuatorSecurityConfig(HttpSecurity http) throws Exception {
        http.securityMatcher("/actuator/**")
                .authorizeHttpRequests(auth -> auth
                        // 按需调整权限,测试阶段可临时设为permitAll
                        .anyRequest().permitAll()
                )
                .csrf(csrf -> csrf.ignoringRequestMatchers("/actuator/**"));
        return http.build();
    }
    
  4. 检查JVM运行权限
    如果启动时指定了-Djava.security.manager参数开启了安全管理器,需要调整安全策略文件,给应用授予堆转储操作权限;非必要场景直接移除SecurityManager启动参数即可。

验证方式

配置调整重启后,可直接访问http://localhost:8080/actuator/heapdump,如果能正常下载后缀为.hprof的堆转储文件,说明端点功能正常。

内容的提问来源于stack exchange,提问作者Veer7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:42:31