Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 由于字符串对象,从数据库提取时内存泄漏_Java_String - Fatal编程技术网

Java 由于字符串对象,从数据库提取时内存泄漏

Java 由于字符串对象,从数据库提取时内存泄漏,java,string,Java,String,我有这样一个代码: public Integer detailMigration(Integer p1, Integer p2) { List<Info> memberInfo = this.memberInfoRepository.findBymemberIdBetween(p1, p2); Integer count = 0; for (Info pInfo : memberInfo) {

我有这样一个代码:

 public Integer detailMigration(Integer p1, Integer p2) {
           List<Info> memberInfo = this.memberInfoRepository.findBymemberIdBetween(p1, p2);
           Integer count = 0;
           for (Info pInfo : memberInfo) {
               String details = pInfo.getMemberDetails();
               //Do something
               count++;                
           }
           return count;
       }

`List<Info> memberInfo = this.memberInfoRepository.findBymemberIdBetween(p1, p2);` returns the list of member tuples from the DB table.
is String details=pInfo.getMemberDetails;是否要在字符串池中添加新的字符串对象?由于上面的代码流导致内存泄漏。 假设在web应用程序中,我经常进行包含字符串类型列的DB查询,所以只要我从DB中获取它们,它们就会得到附加字符串池。依我看,它应该得到外接程序池,并且它在permgen中,所以它不对GC负责。请纠正我给出确切的情况
正确的方法应该是什么?

您可以尝试字符串生成器,并检查该帮助是否取决于pInfo.getMemberDetails的实现详细信息,您可以共享此信息吗?getMembersDetails只是通过JPA调用从DB获取数据并返回数据。只有您调用intern的字符串常量和字符串才会放入内存池。即使是这样,也只能使用Java6。常规字符串对象只保留在堆上,并进行垃圾收集。要查找内存泄漏,可以进行堆转储并使用MAT之类的工具进行分析
for (Info pInfo : memberInfo) {
               String details = pInfo.getMemberDetails();
               //Do something
               count++;                
           }