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 内存溢出的可能性汇总
最新推荐文章于 2021-02-27 06:23:46 发布