问题
What I'm asking is if it's possible to limit memory (heap or stack) assigned to a specific process, so that this process can't exceed it. Maybe something like "process_flag(min_heap_size, MinHeapSize)", but for the maximum heap.
回答1:
You could put together some kind of process tracking gen_server that periodically checks assigned processes for memory footprint and kills them if it exceeds a certain amount.
Using a combination of process_info(Pid, memory).
and exit(Pid, Reason)
calls, this should be quite manageable.
回答2:
You could use spawn_opt
with max_heap_size
来源:https://stackoverflow.com/questions/13699559/erlang-how-to-limit-the-memory-assigned-to-a-process