dubbo
dubbo copied to clipboard
泛化调用内存泄露
如下泛化调用代码,JVM内存会不断升高,不会释放,有什么建议吗?
`ApplicationConfig` applicationConfig = new ApplicationConfig();
applicationConfig.setName(applicationName);
RegistryConfig registry = new RegistryConfig();
registry.setAddress(registryAddress);
registry.setGroup(registryGroup);
registry.setRegister(false);
registry.setEnableEmptyProtection(false);
ReferenceConfig<GenericService> reference = new ReferenceConfig<>();
reference.setInterface(interfaceName);
reference.setGeneric("true");
reference.setFilter(filters);
reference.setRetries(0);
reference.setRegistry(registry);
GenericService srv = reference.get();
Preconditions.checkState(srv != null, "找不到服务:" + interfaceName);
从内存快照种可以看到非常多(几百万级别)HashMap,char[],如:

reference.get 之后的对象需要缓存起来。后续调用不应该会有泄漏,需要看一下是什么版本的,以及泄漏对象的到 gc root 的树。
dubbo 3.1.3。做了如果缓存处理,后续有更新再反馈到这:
ReferenceCache refCache = SimpleReferenceCache.newCache();
GenericService srv =refCache.get(reference);
Object res = srv.$invoke(method, args, values);