|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
不得不提一下的是:.net网页编程是看到java红,而开发出来的工具。
在临盆情况中tomcat内存设置欠好很简单呈现内存溢出。形成内存缘故原由是纷歧样的,固然处置体例也纷歧样。
这里依据平常碰到的情形和相干材料举行一个总结。罕见的一样平常会有上面三种情形:
1.OutOfMemoryError:Javaheapspace
2.OutOfMemoryError:PermGenspace
3.OutOfMemoryError:unabletocreatenewnativethread.
关于前两种情形,在使用自己没有内存保守的情形下能够用设置tomcatjvm参数来办理。(-Xms-Xmx-XX:PermSize -XX:MaxPermSize)
最初一种大概必要调剂操纵体系和tomcatjvm参数同时调剂才干到达目标。
第一种:是堆溢出。
在JVM中假如98%的工夫是用于GC且可用的Heapsize不敷2%的时分将抛出此非常信息。
没有内存保守的情形下,调剂-Xms-Xmx参数能够办理。
-Xms:初始堆巨细
-Xmx:最年夜堆巨细
但堆的巨细受上面三方面影响:
1.相干操纵体系的数据模子(32-bt仍是64-bit)限定;(32位体系下,一样平常限定在1.5G~2G;我在2003server体系下(物理内存:4G和6G,jdk:1.6)测试1612M,64为操纵体系对内存无穷制。)
2.体系的可用假造内存限定;
3.体系的可用物理内存限定。
堆的巨细可使用java-Xmx***M version命令来测试。撑持的话会呈现jdk的版本号,不撑持会报错。
-Xms-Xmx一样平常设置成一样对照比如如setJAVA_OPTS=-Xms1024m-Xmx1024m
第二种:永世保留地区溢出
PermGenspace的全称是PermanentGenerationspace,是指内存的永世保留地区。这一部分用于寄存Class和Meta的信息,Class在被Load的时分被放进PermGenspace地区,它和和寄存Instance的Heap地区分歧,GC(GarbageCollection)不会在主程序运转期对PermGenspace举行清算,以是假如你的APP会LOAD良多CLASS的话,就极可能呈现PermGenspace毛病。这类毛病罕见在web服务器对JSP举行precompile的时分。但今朝的hibernate和spring项目中也很简单呈现如许的成绩。http://www.javaeye.com/topic/80620?page=1 的帖子有会商的这个成绩。多是因为这些框架会静态class,并且jvm的gc是不会清算PemGenspace的,招致内存溢出。
这一个通常为加年夜-XX:PermSize -XX:MaxPermSize来办理成绩。
-XX:PermSize永世保留地区初始巨细
-XX:PermSize永世保留地区初始最年夜值
这一样平常分离第一条利用,好比setJAVA_OPTS=-Xms1024m-Xmx1024m -XX:PermSize=128M-XX:PermSize=256M
有一点必要注重:java-Xmx***M version命令来测试的最年夜堆内存是-Xmx与 -XX:PermSize的和好比体系撑持最年夜的jvm堆巨细事1.5G,那-Xmx1024m -XX:PermSize=768M是没法运转的。
<p>
Java到底会发战成什么样,让我们拭目以待吧,我始终坚信着java会更好。以上都是俺个人看法,欢迎大家一起交流. |
|