一、Java JVM垃圾回收:
JVM的堆内存分为young generation、old generation两部分,young generation划分为Eden、From、To三个区间。新建对象使用Eden区,满后进行young GC,young GC过程中对象在Eden、From、To区间进行转移复制,无效对象将被清除。多次复制到的对象将被转移至old generation,年老代满后进行full GC。
二、Java JVM内存溢出:
在Tomcat的使用过程中可能会遇到以下3种内存溢出的报错
(1)OutOfMemery heap space 可以通过JVM启动参数进行设置,如-Xms256m -Xmx512m
(2)OutOfMemery PermGen space PermGen space用于类的加载,当工程较大载入的类很多会导致该报错。可通过JVM启动参数进行调整,如-XX:PermSize=64m、-XX:MaxPermSize=128m。
(3)StackOverflow 方法的层数过多会导致栈内存溢出,需要对方法进行修改。