Out of memory: Kill process 内存不足

服务直接被 killed,感觉特别奇怪。代码肯定是没有问题的,但为什么放到服务器上就出错了呢。

部署时报错如下:

Shell代码  

  1. Failed to add the deployment content to the repository: java.util.concurrent.CancellationException: Operation was cancelled

wildfly 报错如下:

Shell代码  

  1. ./standalone.sh: line 307: 12526 Killed

一时还真看不出是什么毛病。

于是使用 dmesg 查找原因,终于找到了原因:

Shell代码  

  1. # dmesg | tail
  2. [1147898.706546] Out of memory: Kill process 12526 (java) score 399 or sacrifice child
  3. [1147898.710393] Killed process 12526 (java) total-vm:2559448kB, anon-rss:403304kB, file-rss:780kB, shmem-rss:0kB
  4. [1147898.738479] oom_reaper: reaped process 12526 (java), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB

原来是因为内存不足导致了。我使用的服务器内存只有 1G,上面跑了很多的服务,因此可以内存并不大,所以才出了问题。

原文地址:https://www.cnblogs.com/timxgb/p/9784361.html

时间: 2024-11-08 19:52:51

Out of memory: Kill process 内存不足的相关文章

out of memory kill process (java) score or a child

最近在跑大数据,发现 out of memory kill process (java) score or a child,查资料发现是操作系统linux low mem 太低,后来加大内存一样不管用,开始分析代码: 将代码中的String 字符串拼接改成StringBuilder(单线程速度比StringBuffer快) 将获取文件名称的方法file.listFiles() 改成 file.list() 将代码中的不必要的创建对象.数组开销去掉,尤其是在循环里 发现仍然有问题,通过free -

Linux中:Out of memory: Kill process 1270 (java) score 478 or sacrifice child 或者:java.lang.OutOfMemoryError: PermGen space

解:内存不足,自动查杀了进程,即杀死了项目进程,项目不能启动 这个问题的原因是low memory耗尽."内核使用low memory来跟踪所有的内存分配,一旦low memory耗尽,就会查杀进程,以保持系统的正常运转.说白了 OOM Killer 就是一层保护机制,用于避免 Linux 在内存不足的时候不至于出太严重的问题,把无关紧要的进程杀掉 解:找到:bin/catalina.sh,在这个前面 echo "Using CATALINA_BASE:   $CATALINA_BAS

[Android Memory] App调试内存泄露之Context篇(上)

转载自:http://www.cnblogs.com/qianxudetianxia/p/3645106.html Context作为最基本的上下文,承载着Activity,Service等最基本组件.当有对象引用到Activity,并不能被回收释放,必将造成大范围的对象无法被回收释放,进而造成内存泄漏. 下面针对一些常用场景逐一分析. 1. CallBack对象的引用 先看一段代码: @Override protectedvoid onCreate(Bundle state){ super.o

[Android Memory] App调试内存泄露之Context篇(下)

转载地址:http://www.cnblogs.com/qianxudetianxia/p/3655475.html 5. AsyncTask对象 我N年前去盛大面过一次试,当时面试官极力推荐我使用AsyncTask等系统自带类去做事情,当然无可厚非. 但是AsyncTask确实需要额外注意一下.它的泄露原理和前面Handler,Thread泄露的原理差不多,它的生命周期和Activity不一定一致. 解决方案是:在activity退出的时候,终止AsyncTask中的后台任务. 但是,问题是如

Memory Leak(内存泄漏)问题总结(转)

最近听了一些关于Memory Leak(内存泄漏)的seminar,感觉有些收获,所以留个记录,并share给朋友. 1 什么是Memory Leak. Memory Leak是指由于错误或不完备的代码造成一些声明的对象实例长期占有内存空间,不能回收.Memory Leak会造成系统性能下降,或造成系统错误. 2 Memory存储模式 我们通常写的C++或Java Code在内存里边的存储状况概如下图. 简单的说,一般局部变量存储于Stack中,以提高运行问速度.而New出来的变量则将引用信息或

Android性能优化第(二)篇---Memory Monitor检测内存泄露

上篇说了一些性能优化的理论部分,主要是回顾一下,有了理论,小平同志又讲了,实践是检验真理的唯一标准,对于内存泄露的问题,现在通过Android Studio自带工具Memory Monitor 检测出来.性能优化的重要性不需要在强调,但是要强调一下,我并不是一个老司机,嘿嘿!没用过这个工具的,请睁大眼睛.如果你用过,那么就不用在看这篇博客了. 先看一段会发生内存泄露的代码 public class UserManger { private static UserManger instance;

内存溢出(Memory Overflow)和内存泄露(Memory Leak)的区别

内存溢出(Memory Overflow)和内存泄露(Memory Leak)的区别 内存泄漏指你用malloc或new申请了一块内存,但是没有通过free或delete将内存释放,导致这块内存一直处于占用状态. 内存溢出指你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数据,就是溢出. 要点: 一.内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分内存不可用的情况,重启计算机可以解决,但也有可能再次发生内存泄露,内存泄露和硬件没有关系,它是由软件

Android 如何将一个app 设置为持久app, 不被low memory kill 关闭

前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net 雨季o莫忧离:http://blog.csdn.net/luckkof 正文 [Description] 如何将一个app 设置为常住app, 不被low memory kill 关闭 [Keyword] app 持久 persistent [Solution] 1. 将app 的manifest.xml 中的 application 中添加属性 android:

Eclipse Memory Analyzer 分析内存泄露

OutOfMemoryError示例 代码 package com.walson.heap; import java.util.ArrayList;import java.util.List; /** * java 堆溢出 *  * -verbose:gc -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError * @author gjh1 * */public class HeapOOM { static class OOMObject{