At the implementation of the `getMemoryConf` method in the `JobLauncher` class, the method is implemented with an assumption that there is only a single type of container. However, our resources specification file supports not only a single type but multiple types (e.g. transient/reserved or executors with heterogeneous memory specs). I think you could refer to the `requestContainer` method in the `RuntimeMaster` class. This should support the different executors with a uniform ratio or something similar.
+ I think the default value of off-heap memory of 0.2 is a bit too large, as for workloads that do not use the off heap optimization simply leaves 20% of its memory idle. This should be changed in the way that the off-heap memory optimization is used by default or the default number of 0.2 should be minimized.