As has been explained many times: epg.dat is only written on stopping E2 and read on starting E2. As long as E2 is alive all epg-data is in RAM.
So what you see is expected behaviour.
You can also force epg.dat to be written by saving manually via the EPG-menu.