Вот как вам сказать .... вы сделали программу , в которой написали Object obj = new Object(); - obj уже хранится у вас в памяти, и пропадет пока сборщик мусора его не убьет. так что когда у вас наполняется List<obj> - он находится в памяти. Как только вы его решите сохранить на локальный диск либо передать по сети - вот тут вам понадобится JSON, очень грубо говоря для своих объектов получите форматированный текст ( в JSON либо в XML ) который потом сможете опять привести к своим объектам