fastjson的JSONOject.toJSONString(object) 死机的问题

当使用fastjson的JSONOject.toJSONString方法转换包含循环引用的对象时,可能导致内存溢出和应用死机。问题源于对象classifyMark的parent属性引起的无限递归。某些环境下,设置`SerializerFeature.DisableCircularReferenceDetect`会触发死循环。解决方案是避免将持久化对象带入JSON转换,以防止循环引用。
摘要由CSDN通过智能技术生成

fastjson的JSONOject.toJSONString(object) 死机的问题

现象:日志里出现无穷尽的这句日志,这句话在一行,大约400M,让log4j都来不及分割。class com.*.model.classifyMark, fieldName : parent, write javaBean error, fastjson version 1.2.70, class 内存溢出以及死机

经排查 JSONOject.toJSONString(object) ,而object对象中的一个属性是classifyMark,而classifyMark里又有关联的父对象parent,以及子对象childrenList

因开发人员失误,此对象为持久化对象,所以一直无穷尽的get调用相关属性,直至内存溢出以及死机

但是 几套环境表现不一致,有的能转出json串类似上文循环处出现$字样,有的不能转出,出现上面的异常,
下面展示一些 内联代码片


greenClassifyMark": {
		"childrenList": [],
		"id": "a",
		"name": "A",
		"parent": {
			"childrenList": [{
				"childrenList": [],
				"id": "b",
				"name": "B",
				"parent": {
					"$ref": "$.classifyM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值