美文网首页
Hibernate 懒加载机制 PO对象 转 JSON 内存溢出

Hibernate 懒加载机制 PO对象 转 JSON 内存溢出

作者: 咯吱_b7cd | 来源:发表于2020-04-29 19:49 被阅读0次

问题描述

内存溢出 OutOfMemory:heap space

排查分析

1.打印dump
jmap -dump:format=b,file=dump.hprof pid
2.用jvisualvm打开dump文件
建议使用jdk自带内存分析jvisualvm,mat和jprofiler有时打不出来溢出对象


image.png

3.定位异常代码
打开类视图,可看到占用内存大的对象


image.png
image.png
char数组溢出,创建超过数组最大大小,可将数组保存文件用more命令分析具体值,逐级分析实例引用,可发现请求后台的action,从而找到对应的源码
image.png
4.结论
该char数组是Hibernate PO对象,使用懒加载机制外键关联其他表,action处理请求返回前台PO对象转换的JSON串异常。
image.png

解决

1.json过滤lazy属性字段: 加注解@JSON(serialize=false)
2.转化前直接赋null,级联类型ALL和REMOVE不要这么做
3.设置JSON-LIB的setCycleDetectionStrategy属性让其自己处理循环,省事但是数据过于复杂的话会引起数据溢出或者效率低下,慎用

相关文章

  • Hibernate 懒加载机制 PO对象 转 JSON 内存溢出

    问题描述 内存溢出 OutOfMemory:heap space 排查分析 1.打印dumpjmap -dump:...

  • Hibernate的加载机制

    Hibernate的懒加载所谓懒加载(lazy)就是延时加载,延迟加载延迟加载是一种机制,主要是解决不必要的查询对...

  • Android面试题整理

    Android方面: 1、View事件分发机制 2、资源加载原理 3、内存优化(内存泄漏、内存溢出),如何查找内存...

  • hibernate(二)[延迟加载]

    什么是懒加载?他的作用? 延迟加载,也叫懒加载,它是hibernate为提高程序执行效率而提供的一种机制,即只有真...

  • JVM

    简介 Jvm 系列一:Java类的加载机制Jvm系列二:JVM内存结构 --内存泄漏与内存溢出Jvm系列三:GC算...

  • 【内存】

    性能优化->虚拟机原理 怎么分析堆内存 内存泄露和内存溢出的原因 怎么做内存管理 JVM类加载机制Java内存区域...

  • Hibernate_9 检索策略

    目的 不浪费内存: 当 Hibernate 从数据库中加载 Customer 对象时, 如果同时加载所有关联的 O...

  • Android知识点基础篇(一)

    索引:Application的生命周期Activity的生命周期内存泄漏和内存溢出Fragment的懒加载实现An...

  • JVM 常见内容汇总

    面试题 对象 对象的创建 分配内存 对象头 内存溢出 内存溢出与内存泄漏 内存溢出:系统无法再分配内存空间。 内存...

  • 栈内存溢出与堆内存溢出

    栈内存溢出: 原因:递归调用 hibernate中如果where条件过多则报此错误 堆内存溢出: java.lan...

网友评论

      本文标题:Hibernate 懒加载机制 PO对象 转 JSON 内存溢出

      本文链接:https://www.haomeiwen.com/subject/ougnwhtx.html