The default value of dataloader multiprocessing_context seems to be “spawn” in a spawned process on Unix.  I will get OOM unless I set  multiprocessing_context="fork" explicitly.
It doesn’t behave as documentation says:

On Unix, fork() is the default multiprocessing 3 start method. Using fork() , child workers typically can access the dataset and Python argument functions directly through the cloned address space.