zoukankan      html  css  js  c++  java
  • Java问题记录——OutOfMemoryError

    Java问题记录——OutOfMemoryError

    摘要:本文主要分析了OutOfMemoryError的产生原因。

    没有分页导致占用大量内存

    查看进程

    使用 jps 命令查看当前运行的Java进程和进程号:

    1 [root@VM_40_24_centos ~]# jps
    2 25953 Bootstrap
    3 7832 Jps

    根据进程号查看实例的运行情况

    使用 jmap 命令查看当前占用内存最高的实例:

     1 [root@VM_40_24_centos ~]# jmap -histo:live 25953 | grep 'xxx.xxx' | head -10
     2    4:        784043       75268128  xxx.xxx.XxxXxxxxx
     3   19:         15435         987840  xxx.xxx.Xxxx
     4   48:          2000         208000  xxx.xxx.Xxx
     5   52:           451         180400  xxx.xxx.XxxxXxx
     6  111:           646          51680  xxx.xxx.XxxXxxxxx
     7  316:           104           9984  xxx.xxx.XxxXxxxxxXxxx
     8  476:           282           4512  xxx.xxxxxxx.XxxxxxxXxxxxxxxxx
     9  496:           267           4272  xxx.xxxxxxx.XxxxxxxXxxxxxxxxxxxxxxXxxxxxxx
    10  877:            47            752  xxx.xxxxxxx.XxxxxXxxxxxxxxxxXxxxxxxx
    11  878:            47            752  xxx.xxxxxxx.XxxxxxXxxxXxxxxxxxxXxxxxxxxXxxxxxxxx

    在日志里找到第一次出现的地方

    根据在Linux中找到的占用内存的实例,去日志查看是因为什么操作导致的:

    1 2019-06-15 10:34:35.398  INFO 10369 --- [askExecutor-818] c.i.ide.engine.task.XxxxXxxxxxXxxx   : send message is success!
    2 Exception in thread "http-nio-8080-Acceptor-0" java.lang.OutOfMemoryError: GC overhead limit exceeded
    3     at java.nio.ByteBuffer.allocate(ByteBuffer.java:335)
    4     at org.apache.tomcat.util.net.SocketBufferHandler.<init>(SocketBufferHandler.java:41)
    5     at org.apache.tomcat.util.net.NioEndpoint.setSocketOptions(NioEndpoint.java:404)
    6     at org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:502)
    7     at java.lang.Thread.run(Thread.java:748)

    查看代码

    根据日志文件和实例名称,查看相关代码,发现是因为查询数据的时候没有分页,导致查询了全部数据,大概有一百万条:

    1 List<XxxXxxxxx> xxx = service.listXxx();

    结论

    以后在写代码的时候一定要注意分页操作。

  • 相关阅读:
    爬虫介绍
    HTTP请求协议
    谷歌浏览器表单提交,input填充背景
    SVN与GIT基础知识学习
    vue 开发环境搭建
    正则表达式验证
    canvas基础
    数组基础方法应用
    AJAX基础学习
    css弹性布局 --flex布局。
  • 原文地址:https://www.cnblogs.com/shamao/p/11115206.html
Copyright © 2011-2022 走看看