摘要: 工作中碰到过这个问题好几次了,觉得有必要总结一下,所以有了这篇文章,这篇文章分为三个部分:认识问题、分析问题、解决问题。一、认识问题: 首先我们通过下面这个 测试程序 来认识这个问题:运行的环境(有必要说明一下,不同环境会有不同的结果):32位 Windows XP,Sun JDK 1.6.0_18, eclipse 3.4,测试程序:Java代码 importjava.util.concurrent.CountDownLatch;publicclassTestNativeOutOfMemoryError{publicstaticvoidmain(String[]args){for(inti. 阅读全文
posted @ 2012-07-02 12:43 Jack204 阅读(555) 评论(0) 推荐(0) 编辑
摘要: 堆设置-Xmx3550m:设置JVM最大堆内存 为3550M。 -Xms3550m:设置JVM初始堆内存 为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 -Xss128k:设置每个线程的栈 大小。JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K。应当根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。 -Xmn2g:设置堆内存年轻代 大小为2G。整个堆内存大小 = 年轻代大小 + 年老代大小 + 持久代大小 。持久代 阅读全文
posted @ 2012-07-02 11:36 Jack204 阅读(29979) 评论(0) 推荐(5) 编辑
摘要: 一、设置JVM内存设置1. 设置JVM内存的参数有四个:-XmxJava Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;-XmsJava Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;-XmnJava Heap Young区大小,不熟悉最好保留默认值;-Xss每个线程的Stack大小,不熟悉最好保留默认值;2. 如何设置JVM内存分配:(1)当在命令提示符下启动并使用JVM时(只对当前运行的类Test生效):java -Xmx128m -Xms64m -Xmn32m -Xss16m Te 阅读全文
posted @ 2012-07-02 11:35 Jack204 阅读(139408) 评论(1) 推荐(14) 编辑