In order to reduce memory consumption routes should be stored more efficiently. Probably instead of storing whole edge pointers, indices for the successor edge would suffice.
I have also some further ideas (just for keeping them in mind):
- store consequent edge only if there is more than one (do not store the only possible consecution); but: what if the vehicle ends on it?
- compute for each edge the "best follower" - the one that is probably used most often; set him as the default direction and store only those edges in route which are not this "best follower"; here, we have the problem with determining the last edge again