Сергей,
1. у фрагментов с выставленным setRetainInstance(true) - не должно быть интерфейса/вьюх вообще! Об этом написано в документаци, черным по белому. Это и является вашей утечкой.
дополнительно: И в бэкстек его класть тоже нельзя!
2. любой анонимный/внутренний не статичесикй класс - имеет не явную ссылку на внешний!
3.
- в методе onCreate у фрагмента особо делать ничего не нужно.
- в методе onCreateView нужно создавать тока вьюху, ну или еще такие мелкие операции как setHasOptionsMenu.
- вся основная логика делается в onViewCreated, уже после того как фрагмент приаттачился и создал все вьюхи.
4. на будущее, любой листенер вы можете занулить в методе
onDestroy - Activity
onDestroyView - Fragment
например
adapter.setOnItemClickListener(null)
и важно это делать ДО супер метода!
5. По опыту говорю, все вот эти LeakCanary это для ленивых хипстеров.
Нормальная тулза которая точно вам скажет, что течет, как сильно, и самое главное КТО удерживает эту ссылку покажет - MAT (Memory Analyser Tool) в связке с DDMS, не поленитесь разобраться, на хабре есть кучу статей.