When a system runs out of memory, the OOM killer makes a decision about
what process to kill base on its own policy. First, it chooses the
process which currently owns the most memory to kill. By this policy,
it is expected that the process which owns the most memory is the
malfunction one. But in my case, even after getting all the remaining
available memory of system, the malfunction process is still not a
process who held biggest amount of memory, then it happended that the
OOM killer killed the process which own most memory, not the
malfunction one.
So, now I know that when system log show "Out of memory: kill process
<process id>", it doesn't mean that this <process-id>
causes the system runs out of memory.