У вас нет утечки памяти.
Java GC запускается только тогда, когда куча заполнена (на самом деле это немного сложнее, так как сама куча делится на поколения, но в любом случае), поэтому, если вы не заполняете кучу (что очень маловероятно, так как 7Mb слишком мало памяти для любой кучи) вы не можете сказать, есть ли у вас утечка или нет.
WeakReferences
- это небольшие оболочки, которые на самом деле помогают предотвратить утечки памяти, помечая объект, на который они ссылаются, как элегантный для GC. Я предполагаю, что вы включаете какую-то библиотеку кеша, которая создает кучу таких, и, поскольку в куче все еще достаточно места, нет необходимости собирать их мусором.
Опять же, если вы не видите, что сборщик мусора работает часто, а размер кучи все равно увеличивается, я бы не стал беспокоиться о проблемах с памятью.
Вот отличная статья по этому вопросу