[英]Java G1 Garbage collector takes a lot of memory
我了解这个问题。 正如@Holger提到的,ram被分配给了Java进程,但没有完全堆满。 但是G1分配这么多内存的原因 :
如果G1需要分配很多庞大的区域,那么它就会遭受损失。 每当对象大小>区域大小的50%时,就会创建它们。 它们将浪费空间,因为该区域将不会再产生其他任何东西。 因此,如果其大小为51%,您将浪费该区域的49%。 更糟糕的是,如果一个区域为2MB,而您的对象为2.1MB,则第二个区域将浪费1.9MB。 如果分配大对象,请调整XX:G1HeapRegionSize。
RAM消耗将归因于巨大的数据库大小和结果集的大小 。
请尝试以下操作:优化垃圾收集:
警惕String Concatenation运算符(+),请改用concat()
如果使用spring,请尝试使用setFetchSize设置setFetchSize(一次要获取的行数),这会增加执行时间,但它可节省内存
删除所有不必要的声明
使用异步执行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.