1. The memory usage is definitely smaller (~250MB), but that could be due to the possible overwriting of some move costs as you suggested. I will profile it more extensively when I fix the implementation problems.

2. I see what you mean, you're right, I didn't realize that possibility. I tried creating a `static ArrayTable<MrMachine, MrMachine, Integer> machineMoveCostTable`, that is `fromMachine, toMachine, moveCost` respectively. The `getMoveCostTo` method would then return: `machineMoveCostTable.get(this, machine)`.
The heap usage seems to be around ~280MB for B7 and ~340MB for B10, according to VisualVM.
The problem I've hit with this approach, is that the DAO doesn't contain the table, therefore it's not saved to the xml, which prevents opening/saving the solution. If it is kept in memory from the import there are no problems. 
What are your thoughts on this? Do you see any other possible implementation problems with this approach?