(资料图)

1、常见的有以下几种:1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;3.代码中存在死循环或循环产生过多重复的对象实体;4.使用的第三方软件中的BUG;5.启动参数内存值设定的过小;解决方法:JVM申请的heap会占用相同大小的地址空间(address space)。

2、在Windows 32位操作系统中,分配给每个程序的地址空间只有2GB(当然也有3GB的开关)。

3、而每个不同的JVM的堆和其创建的进程栈都依赖于同一个进程地址空间,所以这也是此消彼长的原因。

4、有方法可以提高创建线程的数量: 减少单个线程栈的大小,在JVM启动中使用-Xss参数。

本文到此分享完毕,希望对大家有所帮助。

推荐内容