关于java进程最大值
2014-03-06 18:31
267 查看
而在出现内存泄露的机器上,其日志显示是无法创建本地线程的原因所引起的。这里的异常信息是:java.lang.OutOfMemoryError: unable to create new native thread,对应上述内存溢出的第4种场景。尽管可以初步怀疑是虚拟机参数的设置导致的问题,但实际上还是需要确认系统在自动化场景下有没有其他内存泄露问题。
重新跑自动化,并中间使用“jstat –gcutil 进程ID 1000 3 >>jstat.txt”命令,每隔3秒查看一下虚拟机堆空间的回收情况。在运行了三个多小时后,发行server.log种已经出现了该OutOfMemory的异常信息。此时查看了jstat.txt文件,发现从自动化开始运行一直到堆栈溢出,内存回收都很正常。全部垃圾回收时间花费了5秒左右,且未有full gc,全为young gc的时间。持久区(Perm)、年老区(Old),分别占用了25%、19%左右的空间。且使用“top”命令监测中间CPU和内存占用都比较稳定,没有激增的现象。
使用“jmap –hito 进程ID”查看内存对象统计,发现没有业务逻辑相关的类导致的泄露问题。系统中创建最多的就是与Sting相关的char数组对象。这个也是正常情况,排除程序级别的内存泄漏问题。也就是说堆栈溢出不是1和2的两种情况。
此时再分析server.log种的日志信息,得知是无法创建本地线程所致的问题。也就是说在压力环境下拥有大量的线程,或者本地内存耗尽时,企图创建新的线程时抛出。而系统能创建的线程数的计算公式如下:
(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads
MaxProcessMemory 指的是一个进程的最大内存
JVMMemory JVM内存
ReservedOsMemory 保留的操作系统内存
ThreadStackSize 线程栈的大小
【解决方法】:
针对无法创建更多本地线程的情况,调整线程栈的大小,添加-Xss选项,设置为256k后再跑自动化,发现问题解决。
JAVA_OPTS="-Xms2048M -Xmx2048M -Xmn512M -Xss256k -XX:PermSize=512M….”
重新跑自动化,并中间使用“jstat –gcutil 进程ID 1000 3 >>jstat.txt”命令,每隔3秒查看一下虚拟机堆空间的回收情况。在运行了三个多小时后,发行server.log种已经出现了该OutOfMemory的异常信息。此时查看了jstat.txt文件,发现从自动化开始运行一直到堆栈溢出,内存回收都很正常。全部垃圾回收时间花费了5秒左右,且未有full gc,全为young gc的时间。持久区(Perm)、年老区(Old),分别占用了25%、19%左右的空间。且使用“top”命令监测中间CPU和内存占用都比较稳定,没有激增的现象。
使用“jmap –hito 进程ID”查看内存对象统计,发现没有业务逻辑相关的类导致的泄露问题。系统中创建最多的就是与Sting相关的char数组对象。这个也是正常情况,排除程序级别的内存泄漏问题。也就是说堆栈溢出不是1和2的两种情况。
此时再分析server.log种的日志信息,得知是无法创建本地线程所致的问题。也就是说在压力环境下拥有大量的线程,或者本地内存耗尽时,企图创建新的线程时抛出。而系统能创建的线程数的计算公式如下:
(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads
MaxProcessMemory 指的是一个进程的最大内存
JVMMemory JVM内存
ReservedOsMemory 保留的操作系统内存
ThreadStackSize 线程栈的大小
【解决方法】:
针对无法创建更多本地线程的情况,调整线程栈的大小,添加-Xss选项,设置为256k后再跑自动化,发现问题解决。
JAVA_OPTS="-Xms2048M -Xmx2048M -Xmn512M -Xss256k -XX:PermSize=512M….”
相关文章推荐
- 如鹏java学习进程 获取数组最大值
- 关于平方根的最大下取整数的java代码解决方案
- java中关于整数的一些操作问题--最大公约数、最小公倍数、质数等
- 关于Java中进程与线程的初步认识与掌握
- 关于Java中线程和进程的讨论1(创建线程和线程特点分析)
- 关于 java中 求两个字符串中最大的公共子串之引发对return的用法探讨
- 关于JAVA中String类型的最大长度
- ps -ef | grep java 查看所有关于java的进程
- 关于java在windows里面进程名称问题?
- 关于java线程、进程的一些问题
- 关于Hadoop查看进程时jps命令出现Error: could not find libjava.so
- java进程使用的最大内存的数值
- 运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析
- 关于JAVA的守护进程
- 关于用Java来写最大公约数和最小公倍数的问题详解及代码
- 关于linux系统最大进程数和单进程最大线程数的测试
- java关于ArrayList动态数组与静态数组Arrays-元素比较输出最大最小值的使用例子
- 关于linux的最大打开进程及最大打开文件数 - linux - 第六空间
- 关于Java中的进程和线程的理解
- java中关于报列表中的最大表达式数为1000的错误处理