初次接触weblogic便被它强大的功能所折服。
关于如何安装和配置weblogic度娘上有很多的介绍,这里就不再赘述了。
可以参考以下链接:
http://blog.csdn.net/hackage4619/article/details/55189106
--------------------------------------------------------------------------------------------------常见的内存溢出介绍----------------------------------------------------------------------------------------------------------
导致OutOfMemoryError异常的常见原因有以下几种:
1. 内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
2. 集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
3. 代码中存在死循环或循环产生过多重复的对象实体;
4. 使用的第三方软件中的BUG;
5. 启动参数内存值设定的过小;
此错误常见的错误提示:
1. tomcat:java.lang.OutOfMemoryError: PermGen space
2. tomcat:java.lang.OutOfMemoryError: Java heap space
3. weblogic:Root cause of ServletException java.lang.OutOfMemoryError
4. resin:java.lang.OutOfMemoryError
5. java:java.lang.OutOfMemoryError
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------正餐来了,当安装和配置完weblogic以后满怀欣喜的部署了项目想要一睹芳容,尼玛怎么也跑不起来,控制台报错如下:
java.lang.OutOfMemoryError: PermGen space
这个错误很明显是内存溢出,通过一番查找后终于找到了修改的地方,因为使用的是myeclipse继承weblogic,解决方法如下:知其然必要知其所以然,下面介绍下配置参数的一些含义:
-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
-vmargs 说明后面是JVM的参数,所以后面的其实都是JVM的参数了
-Xms128m JVM初始分配的堆内存
-Xmx512m JVM最大允许分配的堆内存,按需分配
-XX:PermSize=64M JVM初始分配的非堆内存
-XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配
那么问题又来了,什么是堆什么是非堆呢?
------------------------------------------------初识java内存概念--------------------------------------------------------------------
下图是之前自己学习时整理的笔记,讲的比较浅显。
①什么是栈?什么是堆?什么是方法区?
答:
栈:用于存放局部变量
堆:存放new出来的对象
方法区:存放类的信息(代码)、static变量、常量池等 //注:方法区也是属于堆的一部分
解析Student s1=new Student()在内存中的分配过程
1、jvm执行到Student,首先在堆中查找是不是有这个类的信息,没有就通过类加载器把这个类的信息(属性和方法等)加载进堆中。
2、执行Student s1 在栈中分配空间存放变量s1。(此时这个变量并没有指向其他内存空间)
3、执行new Student(),在堆中的方法区外分配一片内存存放new出来的对象信息(对象的方法只是存放地址指向方法区里面的方法)
4、执行=赋值,将new出来的对象的内存空间的首地址赋给s1。
内存分析示意图:
------------------------------------------------------JVM内存进阶-------------------------------------------------------------------
现在我们队堆的概念有了一个大概的了解,那么回到上面的问题,什么是非堆呢?
其实这里是个叫法的不同,非堆其实指的就是上面的方法区。
关于这一部分的内容,小白就不说自己的感悟了(怕误导大家),在度娘上看了位大神的博客觉得甚是牛逼(ps:虽然我看得一知半解):
附上链接地址:http://www.cnblogs.com/dingyingsi/p/3760447.html
有兴趣的朋友可以看看,说的真的很好。
在这也感谢下这位大牛分享的姿势。。。fuck。。知识。---做人不能太污啊
------------------------------------------------------------------------------------------------------------------------------------
最后总结:码海无涯,回头也不是岸啊