alibaba / alibaba/fastjson2

内存泄漏问题咨询

Open
#3,204 1 comment 0 reactions 0 assignees View on GitHub
question
Dominant language
Java
Stars
4.4k
Forks
613
Avg merge
1d 22h
Merged PRs (30d)
6

Description

### 请描述您的问题
*询问有关本项目的使用和其他方面的相关问题。*
我在使用插件类加载器的时候,插件停止的时候会,清理缓存,
```java
ObjectWriterProvider writerProvider = JSONFactory.getDefaultObjectWriterProvider();
ObjectReaderProvider readerProvider = JSONFactory.getDefaultObjectReaderProvider();
writerProvider.clear();
readerProvider.clear();

Map pluginClassLoaders1 = getPluginClassLoaders();
pluginClassLoaders1.forEach((k, v) -> {
log.info("stopPlugins::plugin:{}, classloader:{}", k, v);
writerProvider.cleanup(v);
readerProvider.cleanup(v);
});
```

如果多次重新加载,在fastjson2会出现Caused by: java.lang.OutOfMemoryError: Metaspace,我该怎么协助排查下呢
```bash
com.alibaba.fastjson2.JSONException: create objectReader error, objectType com.weidian.iot.sdk.device.client.model.BaseMessage
at com.alibaba.fastjson2.reader.ObjectReaderCreatorASM.jitObjectReader(ObjectReaderCreatorASM.java:602)
at com.alibaba.fastjson2.reader.ObjectReaderCreatorASM.createObjectReader(ObjectReaderCreatorASM.java:327)
at com.alibaba.fastjson2.reader.ObjectReaderProvider.getObjectReaderInternal(ObjectReaderProvider.java:845)
at com.alibaba.fastjson2.reader.ObjectReaderProvider.getObjectReader(ObjectReaderProvider.java:763)
at com.alibaba.fastjson2.JSON.parseObject(JSON.java:858)
at com.weidian.iot.sdk.device.client.DeviceClient.publishRawMessage(DeviceClient.java:187)
at com.weidian.iot.sdk.device.client.DeviceClient.reportProperties(DeviceClient.java:231)
at com.weidian.iot.sdk.device.device.AbstractBridgeDevice.reportProperties(AbstractBridgeDevice.java:119)
at com.weidian.iot.sdk.device.device.subdevice.AbstractBridgeSubDevice.reportProperties(AbstractBridgeSubDevice.java:114)
at com.weidian.iot.sdk.device.device.AbstractDevice.firePropertiesChanged(AbstractDevice.java:104)
at com.weidian.iot.sdk.device.service.DeviceService$1.run(DeviceService.java:344)
at java.base/java.util.TimerThread.mainLoop(Timer.java:556)
at java.base/java.util.TimerThread.run(Timer.java:506)
Caused by: java.lang.OutOfMemoryError: Metaspace
```

Contributor guide

Open the contributing guide

Research direction

Start by tracing ObjectReaderCreatorASM.java:602 and ObjectReaderProvider.java:763-845 from the reported JSON.parseObject call in DeviceClient.java:187. Reproduce repeated plugin reloads while examining the writerProvider and readerProvider cleanup calls shown in the issue. Done means the source of the Metaspace growth is identified and a repeatable diagnostic or verified fix is documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.