Помните, что в JVM (и даже в JVM типа «я не могу поверить, что он не является JVM») есть много предметов, которые вы используете и которые не совсем под вашим контролем. Таким образом, правильный подход заключается в том, чтобы найти способ убедиться, что в вашем коде нет утечки памяти, и тогда вы узнаете, что, если память цветет, это, скорее всего, какая-то внешняя подсистема или некоторое предполагаемое следствие фактических потребностей приложения в памяти.
Из вашего описания может показаться, что при рендеринге дисплея просто хранится отложенный буфер кэшированной памяти для каждой ориентации экрана.
Я упоминаю об этом только потому, что вы уже (из вашего поста) сравнивали дампы кучи, и если кучи не показывают тенденцию накопления объектов, то, скорее всего, это какой-то элемент, содержащийся в реализации библиотеки. Я знаю, что это очень общее эмпирическое правило, и оно не применяется к большинству программ (так как они, вероятно, содержат истинные утечки памяти), но это то, что может быть исследовано, когда другие опции исчерпаны.
Если вы действительно хотите убедиться, что в конкретной библиотеке хранится кэшированная копия ориентации экрана, вы всегда можете написать небольшую «тестовую» программу, в которой отсутствуют все смешанные факторы (например, остальная часть вашей программы). и посмотрите, как это происходит на экране с изменением ориентации.
Что касается использования VisualVM, он отлично подходит для обнаружения утечек памяти в пользовательском пространстве; однако, поскольку он работает на другой архитектуре и реализации, он может пропустить проблемы с библиотекой, специфичные для платформы.