java - 创建异常 : java. lang.OutOfMemoryError

标签 java arraylist jvm out-of-memory

我对现有应用程序的代码进行了一些修改。在测试时,我创建了异常:java.lang.OutOfMemoryError。但该错误仅偶尔发生一次。下面是发生错误的代码片段

}else if(subject.equals("Mobile")){
        to=(String)hashMap.get("M_MOBILETOMAIL");
        m_mobileoptionvalue=(String)parameters.get("m_mobileoptionvalue");
        m_mobileq1value=(String)parameters.get("m_mobileq1value");
        StringTokenizer m_tokenizer1 = new StringTokenizer(m_mobileq1value,"|");
        while (m_tokenizer1.hasMoreTokens()){
            m_mobileq1List.add(m_tokenizer1.nextToken());
         }
        m_mobileq2value=(String)parameters.get("m_mobileq2value");
        StringTokenizer m_tokenizer2 = new StringTokenizer(m_mobileq2value,"|");
        while (m_tokenizer2.hasMoreTokens()){
        m_mobileq2List.add(m_mobileq2value);
         }
        m_mobileq3value=(String)parameters.get("m_mobileq3value");
        StringTokenizer m_tokenizer3 = new StringTokenizer(m_mobileq3value,"|");
        while (m_tokenizer3.hasMoreTokens()){
        m_mobileq3List.add(m_mobileq3value);
        }
        m_mobileq4value=(String)parameters.get("m_mobileq4value");
        m_mobileq4=(String)parameters.get("m_mobileq4");

    }

我遇到的错误在行

m_mobileq2List.add(m_mobileq2value);

还附上 JVM 日志 ----

exception created in one of the service methods of the servlet MailSend in application interact_assorted_intapp7. Exception created : java.lang.OutOfMemoryError
        at java.util.ArrayList.newElementArray(ArrayList.java:94)
        at java.util.ArrayList.growAtEnd(ArrayList.java:375)
        at java.util.ArrayList.add(ArrayList.java:158)
        at com.international.servlets.MailSend.doPost(MailSend.java:473)

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)

我浏览了一些相关的帖子,但没有得到任何正确的结果。HeapSize 的增加也超出了范围。

最佳答案

while (m_tokenizer2.hasMoreTokens()){
    m_mobileq2List.add(m_mobileq2value);
}

您永远不会向前移动标记器指针,因此当满足此条件时,它会无限地将第一个标记添加到您的列表中。尝试一下

while (m_tokenizer2.hasMoreTokens()){
    m_mobileq2List.add(m_tokenizer2.nextToken());
 }

关于java - 创建异常 : java. lang.OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21160070/

相关文章:

java - 解释 Java *客户端* 安全问题和 *服务器* 安全问题之间的区别

kotlin - 使用 @Inject 注释的依赖注入(inject)如何在 micronaut Kotlin 中工作?

java permGen内存不足错误tomcat-liferay服务器

java - Json MongoDb 查询中的 Spring-boot 可选 ArrayList 参数

java - 从 Java 内部测量单个方法性能的确切方法?

java - 使用比较器在列表中向上移动元素

java - 对整数数组进行排序,同时保持与字符串数组的关系

java - @Transactional 如何影响 Hibernate 中的当前 session ?

java - Maven + IntelliJ 项目设置重置

java - 关于私有(private)数组列表和其他此类结构的最佳实践