Java 内存溢出的可能性汇总

1 分配的内存太小, 请使用 JVM 参数设置更大的可用内存 
java -Xms512m -Xmx1024m 

2 递归循环了 
3 你把某个对象放到了一个Set/List/Map 里面,用完了有忘了释放 
在你的static 的对象/ 单例类也算 
里面找吧,所有涉及到set/list/map的都差一遍 

4 你把某些集合放到了 session/application 里面了, 
这样,如果session不过期,他们占用内存就不会释放,即使其他地方被null也没用 

5 你的算法有问题,你不应该把大的数据,比如文件和Blob/Clob之类的东西读入到内存进行处理,而应该用Stream的方式进行. 

6 虽然内存空闲总量足够,但GC之后,依然找不到任何一块满足当前请求的连续内存大小时。 
这个同样是涉及问题,也许你申请的太大了。也许那些不用的类,特备是对象缓冲区,应该减少对内存的占用,特备是NNN多的小对象!

你可能感兴趣的:(java,jvm,算法)