Сначала вам необходимо решить, какие данные должны храниться в памяти (данные, к которым ваше приложение должно быстро получить доступ), и какие данные необходимо сохранить для извлечения при необходимости.
Как правило, я думаю, что приложение хранит все свои данные в базе данных, и вы загружаете в память только те данные, которые наиболее вероятно будут использоваться.
То, что наиболее вероятно , зависит от вашего приложения, вы можете рискнуть загрузить данные, которые не будут использоваться (потребляют больше памяти, но имеют лучшую производительность), или вы можете пойти в обратном направлении.
Данные, хранящиеся в файле, не находятся в куче Java, переменные и объекты существуют в куче, а файлы - нет.
И вам следует рассмотреть возможность использования SQLite вместо файла.