Memory leaks RxJava Observable Zip导致内存泄漏

Memory leaks RxJava Observable Zip导致内存泄漏,memory-leaks,retrofit,rx-java,rx-android,leakcanary,Memory Leaks,Retrofit,Rx Java,Rx Android,Leakcanary,我使用RxJava的Observable.zip方法将两个API调用组合成一个结果。由于某种原因,尽管我取消了订阅,但我还是出现了内存泄漏。我不确定这是否是我这边的一个bug,或者我是否需要与可观察对象的创建有关 protected void onCreate(Bundle bundle) { ... subscription = Observable.zip( api.getConfiguration(), api.getSettings().map(r ->

我使用RxJava的Observable.zip方法将两个API调用组合成一个结果。由于某种原因,尽管我取消了订阅,但我还是出现了内存泄漏。我不确定这是否是我这边的一个bug,或者我是否需要与可观察对象的创建有关

protected void onCreate(Bundle bundle) {
...

subscription = Observable.zip(
      api.getConfiguration(),
      api.getSettings().map(r -> r.getData()),
      new Func2<ConfigurationResponse, List<Datum>, Struct>() {
        @Override
        public Struct call(ConfigurationResponse config, List<Datum> data) {
          return new Struct(data, config.getCopy(), config.getSettings());
        }
      }
    )
      .compose(Schedulers.applyApiSchedulers())
      .subscribe(
        struct -> {
          configurationManager.set(struct.data, struct.copy, struct.settings);
          startNextActivity();
        },
        error -> {
          startNextActivity();
        }
      );
}

protected void onDestroy() {
  if (!subscription.isUnsubscribed()) {
    subscription.unsubscribe();
  }
}
protectedvoid onCreate(Bundle){
...
subscription=Observable.zip(
api.getConfiguration(),
api.getSettings().map(r->r.getData()),
新功能2(){
@凌驾
公共结构调用(ConfigurationResponse配置,列表数据){
返回新结构(数据,config.getCopy(),config.getSettings());
}
}
)
.compose(Schedulers.applyApiSchedulers())
.订阅(
结构->{
configurationManager.set(struct.data、struct.copy、struct.settings);
startNextActivity();
},
错误->{
startNextActivity();
}
);
}
受保护的空onDestroy(){
如果(!subscription.isunsubscripted()){
订阅。取消订阅();
}
}
这是金丝雀泄漏的痕迹


任何帮助都将不胜感激。

我怀疑泄漏来自
订阅
本身,因为您似乎一直在通过它引用
订户
。请尝试清除存储区中的引用,然后再次检查是否存在泄漏。

这可能是改装中的泄漏,类似的泄漏似乎已报告

请注意,如果改型泄露了订阅服务器,如果映射程序func不再引用活动实例,则可以限制影响。
在您的情况下,
Struct
可能是一个非静态实例类(因此有一个对活动实例的隐式引用),如果您设法使其成为静态的,而不引用活动,则很可能会消除此漏洞。

您可以向我们展示源api.getConfiguration()、api.getSettings()?
api
只是一个改型接口,所以实际上没有。改型的版本是什么?我使用的是改型-1.9.0、RxJava 1.0.14和RxAndroid 1.0.0。