我在Linux上运行了一个Java应用程序“A”。它使REST调用另一个在Liberty之上作为服务运行的Java程序“S”。 “S”被杀,大概是因为记忆力不足。我曾尝试使用“virtualvm”和“top”来检测两个Java程序,而我从两者中观察到的内容似乎是矛盾的。例如,virtualvm表示“S”的“大小”为~2.8GB,而“top”表示“S”的“VIRT”内存大小超过13GB。如果我相信“顶级”,该程序应该被杀死是合理的,但如果我相信“virtualvm”,似乎有足够的空间。
有人可以解释这种差异,并建议我相信哪种工具?