OMM

OMM主要三类: permgen OOM ,heap OOM, stack overflow 

permgen OOM: 这个主要是由于加载的类太多,或者反射的类太多,还有调用 String.intend(jdk7之前)也会造成这个问题。所以出现了这个问题,就检查这三个方面;

heap OOM:主要是因为一些无用对象没有及时释放造成的,检查代码加上 heap dump 去分析.

stack overflow:这个主要是由于调用层数,或者递归深度太大造成的,看异常信息,基本上就能定位得出来了.

内存泄漏检查

年老代堆空间被占满

异常: java.lang.OutOfMemoryError: Java heap space

解决:

    这种方式解决起来也比较容易,一般就是根据垃圾回收前后情况对比,同时根据对象引用情况(常见的集合对象引用)分析,基本都可以找到泄漏点。

 

持久代被占满

异常:java.lang.OutOfMemoryError: PermGen space

解决:

    1.-XX:MaxPermSize=16m

 

堆栈溢出

异常:java.lang.StackOverflowError

说明:这个就不多说了,一般就是递归没返回,或者循环调用造成

 

 

线程堆栈满

异常:Fatal: Stack size toosmall

说明:java中一个线程的空间大小是有限制的。JDK5.0以后这个值是1M。与这个线程相关的数据将会保存在其中。但是当线程空间满了以后,将会出现上面异常。

解决:增加线程栈大小。-Xss2m。但这个配置无法解决根本问题,还要看代码部分是否有造成泄漏的部分。

 

系统内存被占满

异常:java.lang.OutOfMemoryError:unable to create new native thread

这个异常是由于操作系统没有足够的资源来产生这个线程造成的。系统创建线程时,除了要在Java堆中分配内存外,操作系统本身也需要分配资源来创建线程。因此,当线程数量大到一定程度以后,堆中或许还有空间,但是操作系统分配不出资源来了,就出现这个异常了。


### OMM权限是什么 OMM(Operation Maintenance Module)权限通常指的是在某些系统中,用于操作维护模块的特定权限配置。在Linux系统环境中,`omm` 通常是一个用户或用户组,专门用于执行与系统维护和管理相关的任务。例如,在某些数据库或大数据系统中,`omm` 用户被赋予了特定的权限,以确保系统维护操作的安全性和可控性。 在文件权限管理中,可以看到类似 `drwxr-xr-x. 2 omm omm 6 Feb 16 22:16 Desktop` 的信息,其中第一个 `omm` 表示文件或目录的所属用户,第二个 `omm` 表示所属组。这意味着 `omm` 用户及其组成员对这些文件或目录具有读、写、执行的权限,而其他用户仅具有读和执行权限[^1]。 ### 如何配置OMM权限 #### 1. **切换到OMM用户** 在Linux系统中,可以通过以下命令切换到 `omm` 用户: ```bash su - omm ``` 如果需要配置 `omm` 用户的权限,通常需要以具有管理员权限的用户(如 `root`)身份进行操作。 #### 2. **修改文件或目录权限** 可以通过 `chmod` 命令修改文件或目录的权限。例如,要为 `omm` 用户添加对某个文件的写权限,可以使用以下命令: ```bash chmod u+w filename ``` 如果需要递归地修改某个目录及其子目录的权限,可以使用 `-R` 选项: ```bash chmod -R u+w directoryname ``` #### 3. **修改文件或目录的所属用户和组** 可以通过 `chown` 命令修改文件或目录的所属用户和组。例如,将某个文件的所属用户和组更改为 `omm`: ```bash chown omm:omm filename ``` 同样,递归修改目录及其子目录的所属用户和组可以使用 `-R` 选项: ```bash chown -R omm:omm directoryname ``` #### 4. **配置OMM用户的系统权限** 在某些系统中,`omm` 用户可能需要特定的系统权限来执行维护任务。可以通过编辑 `/etc/sudoers` 文件,为 `omm` 用户添加 `sudo` 权限。例如: ```bash omm ALL=(ALL) NOPASSWD: ALL ``` 这样,`omm` 用户就可以通过 `sudo` 命令执行需要管理员权限的操作。 #### 5. **配置OOM相关参数** 在系统资源管理中,`omm` 用户可能还需要配置与内存管理相关的参数,例如 `vm.oom_kill_allocating_task`。该参数用于控制是否直接杀死触发OOM(Out of Memory)机制的进程,而不是进行复杂的扫描和评分。可以通过以下命令设置该参数: ```bash echo 1 > /proc/sys/vm/oom_kill_allocating_task ``` 为了确保该配置在系统重启后仍然生效,可以将其添加到 `/etc/sysctl.conf` 文件中: ```bash vm.oom_kill_allocating_task = 1 ``` 然后使用以下命令应用配置: ```bash sysctl -p ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值