Java报错sun.misc.Unsafe.park(Native Method)问题

 更新时间:2024年07月18日 11:03:59   作者:BestTomDoG  
这篇文章主要介绍了Java报错sun.misc.Unsafe.park(Native Method)问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Java报错sun.misc.Unsafe.park(Native Method)

这个问题基本上是Spring在启动的时候,某个东西重复被初始化(请仔细检查自己有没有重名的接口,我好几次都是接口重名导致的),导致内存溢出或者其它。

我们在编程的过程中,一定要细心,避免类似的错误发生。

Java报错sun.misc.Unsafe.park(Native Method) Conflicting setter definitions for property 导致的内存泄露

1.报错信息

2021-10-29 08:44:56  WARN [,,,] [main] o.a.c.loader.WebappClassLoaderBase - 
The web application [ROOT] appears to have started a thread named [spring.cloud.inetutils] 
but has failed to stop it. This is very likely to create a memory leak. 
Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)

2021-10-29 08:45:00 ERROR [,,,] [main] o.s.boot.SpringApplication - 
Application run failed
java.lang.IllegalArgumentException: Conflicting setter definitions for property "cur_page": 
com.example.demo.xxxClass#setSortTag(1 params) vs 
com.example.demo.xxxClass#setCurPage(1 params)

2.错误代码

错误代码在第 2️⃣ 行:

@JsonProperty() 的 value 值跟下边的 curPage 的相同,就导致了 setter 定义冲突。

    @ApiModelProperty(value = "排序标签")
    @JsonProperty(value = "cur_page")
    private Integer sortTag;

    @ApiModelProperty(value = "当前页")
    @JsonProperty(value = "cur_page")
    private Integer curPage;

3.原因分析

遇到内存泄漏的次数不多,值得分析一下,我们看一下编译后的代码:

    @JsonProperty("cur_page")
    public Demo setSortTag(final Integer sortTag) {
        this.sortTag = sortTag;
        return this;
    }

    @JsonProperty("cur_page")
    public Demo setCurPage(final Integer curPage) {
        this.curPage = curPage;
        return this;
    }

在JSON反序列化过程中,JSON需要和定义的实体类的属性对应,当属性名称不一致的时候我们会使用@JsonProperty("")来映射属性,编译后的代码除了@JsonProperty("curPage") 相同看不出其他的异常,实际上 @JsonProperty("") 在序列化时也起到作用了:

// 序列化前(不同的KEY)
{ "sort_tag" : "1",  "cur_page" : "2" }
// 理论上序列化后(具有相同的KEY)
{ "curPage" : null, "curPage" : "2" }

所以猜想内存泄漏有可能就是出现在对象的序列化过程中。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • IDEA神器一键查看Java字节码及其他类信息插件

    IDEA神器一键查看Java字节码及其他类信息插件

    这篇文章主要为大家介绍了一款IDEA神器,可以一键查看Java字节码及其他类信息,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2022-01-01
  • Java拦截过滤器模式 (Intercepting Filter )实现方法

    Java拦截过滤器模式 (Intercepting Filter )实现方法

    拦截过滤器模式(Intercepting Filter Pattern)用于对应用程序的请求或响应做一些预处理/后处理,本文通过实例代码介绍Java拦截过滤器模式 (Intercepting Filter )的相关知识,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • Java把Map转为对象的实现代码

    Java把Map转为对象的实现代码

    在项目开发中,经常碰到map转实体对象或者对象转map的场景,工作中,很多时候我们可能比较喜欢使用第三方jar包的API对他们进行转化,但这里,我想通过反射的方式对他们做转化,感兴趣的同学跟着小编来看看吧
    2023-08-08
  • Java Object类equals方法

    Java Object类equals方法

    这篇文章主要介绍了Java Object类equals方法,Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入,下文更多相关介绍,需要的小伙伴可以参考一下
    2022-04-04
  • SpringBoot 上传文件判空以及格式检验流程

    SpringBoot 上传文件判空以及格式检验流程

    这篇文章主要介绍了SpringBoot 上传文件判空以及格式检验流程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 浅谈Spring中HandlerMapping的使用

    浅谈Spring中HandlerMapping的使用

    这篇文章主要介绍了浅谈Spring中HandlerMapping的使用,Spingmvc中的HandlerMapping负责解析请求URL,对应到Handler进行处理,这里的Handler一般为Controller里的一个方法method,也可以为servlet或者Controller等,需要的朋友可以参考下
    2023-08-08
  • Springboot自定义banner及验证过程

    Springboot自定义banner及验证过程

    这篇文章主要介绍了Springboot自定义banner及验证过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • JavaWeb如何发送状态码方法解析

    JavaWeb如何发送状态码方法解析

    这篇文章主要介绍了JavaWeb如何发送状态码方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Java通过经纬度坐标获取两个点之间的直线距离的示例

    Java通过经纬度坐标获取两个点之间的直线距离的示例

    这篇文章主要介绍了Java通过经纬度坐标获取两个点之间的直线距离的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java操作Redis2种方法代码详解

    Java操作Redis2种方法代码详解

    这篇文章主要介绍了Java操作Redis2种方法代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04

最新评论