简短的回答是否定的。当你超过你分配给你的应用程序的内存限制时,平台总是会杀死你的应用程序。这是预期的行为。您不能绕过这一点,因为这实际上意味着您的应用程序没有内存限制。
顺便说一句,我强烈建议您使用Java buildpack V4.x(最新版本),如果您还没有使用的话。最好配置JVM,使您得到像JVM OOME这样的有意义的错误,而不是仅仅让应用程序崩溃。当发生这种情况时,它还会转储有用的诊断信息,这些信息将指导您找到问题的根源。
另一个边注...
null 提前感谢你的帮助。最好的问候。 编辑:它是一个独立的嵌入式应用程序,没有服务器。这个问题发生在机器上部署的应用程序上(很难安装分析工具),但不会发生在我的开发PC上。
问题内容: 我正在使用SUSE SLES 11在POWER7系统上运行多程序工作负载(基于SPEC CPU2006基准)。 有时,工作负载中的每个应用程序都会消耗大量内存,并且总内存占用量会超过系统中安装的可用内存(32 GB)。 我禁用了交换,因为否则使用交换的过程可能会严重影响测量结果。我知道通过这样做,内核可以通过OOM杀手来杀死某些进程。很好 问题是我希望内核杀死的线程以错误条件退出(例如
问题内容: 当Linux内存不足(OOM)耗尽时,OOM杀手根据一些启发式方法选择一个要杀死的进程(这很有趣: http //lwn.net/Articles/317814/)。 如何以 编程方式 确定OOM杀手最近杀死了哪些进程? 问题答案: 试试看:
我有一个用PHP编写的守护进程(不是最好的语言,但与我一起工作),它用于从队列接收作业,并在需要完成作业时处理它们。对于每个新作业,我使用pcntl_fork()将作业分叉到子进程中。在这个子进程中,我然后使用proc_open()执行用于音频转码的长时间运行的系统命令,完成后直接返回到子进程。作业完成后,子进程退出并由父进程清理。 为了保持这个守护进程始终运行,我使用upstart。这是我的暴发
错误: 内存不足,Java运行时环境无法继续。本机内存分配(mmap)无法映射71827456字节以提交保留内存。可能的原因:系统在32位模式下没有物理RAM或交换空间,遇到了进程大小限制。可能的解决方案:减少系统上的内存负载增加物理内存或交换空间检查交换备份存储是否已满在64位OS上使用64位Java减少Java堆大小(-xmx/-xms)减少Java线程数量减少Java线程堆栈大小(-xs)设