Where does memory overflow occur in the JVM? What are the reasons for this?

It Lechi 2021-02-23 15:56:45
memory overflow occur jvm reasons


​    ​ out of memory (Out Of Memory) Often referred to as OOM, stay jvm It is mainly divided into method area 、 Pile up 、 Stack 、 Native Method Stack 、 These parts of the program counter , The program counter is the only one that will not appear OOM Of , In other words, other areas will appear OOM. Let's explain the appearance of several areas OOM The situation and characteristics of .

 

1. java Heap overflow (heap)

Java Heap memory master Use To store during operation all The object of , The area OOM different Chang Yi Generally, there will be the following error message :

 java.lang.OutofMemoryError:Java heap space

 

Can pass dump Can be analyzed by taking a snapshot of memory , It's the memory leak caused by the program , Or because it's not estimated JVM Memory overflow caused by the size of memory .

 

2. Stack overflow (stack)

Stack use To store the thread's local variable table 、 The stack of operands 、 Dynamic links 、 Method exit information . If the depth of the request stack is not foot The error that is thrown when is called contains something like below Information about : java.lang.StackOverflowError.

 

Since the memory occupied by each thread is about 1M, So thread creation also needs memory space . If the number of threads applied for creation exceeds the remaining memory , A similar error will be thrown as follows :java.lang.OutofMemoryError: unable to create new native thread

 

And stack dependent JVM Parameters have :

1 -Xss: Stack size per thread ,JDK5.0 After that, the stack size of each thread is 1M, Previously, the stack size of each thread was 256K.

2  In the same physical memory , Decreasing this value can raw Into more threads . But the operating system is very important to 1 There is a limit to the number of threads in a process , Can't generate... Indefinitely .

 

There is a stack overflow Possible causes :

recursive : Local variables used in recursion are stored in the stack , Stack access efficiency is high , Fast , But the space is limited , Too many recursive variables need to be put on the stack all the time , As a result, the required memory space is larger than the stack space , Stack space is 2M, Heap space, memory space .

 

Run time constant overflow (constant)

Runtime constants are stored in the method area , It mainly stores various literal quantities and symbol references generated by the compiler , But it's also possible to put new constants into the pool during runtime , such as String Class intern Method . If this area OOM, The error result will contain information similar to the following :

1 java.lang.OutofMemoryError: PermGen space

dependent JVM Parameters have :

1 -XX:PermSize: Set persistent generation (perm gen) Initial value , The default is physical memory 1/64

2 -XX:MaxPermSize: Set persistent generation maximum , Default to physical memory 1/4

 

Method area overflow

Method area mainly stores class information loaded by virtual machine , Such as class name 、 Access modifier 、 Constant pool 、 Field description 、 Method description, etc. . In theory JVM The size of this area should be stable after startup , But a lot of frameworks right now , such as Spring and Hibernate Class will be generated dynamically in the process of running , So there are also OOM The risk of . If this area OOM, The error result will contain information similar to the following :

java.lang.OutofMemoryError: PermGen space

dependent JVM Parameters have :

1 -XX:PermSize: Set persistent generation (perm gen) Initial value , The default is physical memory 1/64

2 -XX:MaxPermSize: Set persistent generation maximum , Default to physical memory 1/4 

 

more Java Interview questions , Searchable applets :IT Interview exercises

版权声明
本文为[It Lechi]所创,转载请带上原文链接,感谢
https://javamana.com/2021/02/20210223154804651g.html

  1. docker入门到熟练
  2. Java之HTTP网络编程(一):TCP/SSL网页下载
  3. Introduction to docker
  4. HTTP network programming in Java (1): TCP / SSL web page download
  5. mysql 的ACID以及隔离级别
  6. Acid and isolation level of MySQL
  7. Java序列化对字段名的影响
  8. The influence of Java serialization on field names
  9. Redis 日志篇:系统高可用的杀手锏
  10. Java中把一个对象复制给另外一个对象引发的思考
  11. Java之HTTP网络编程(一):TCP/SSL网页下载
  12. Redis log: the killer of system high availability
  13. Thinking about copying one object to another in Java
  14. HTTP network programming in Java (1): TCP / SSL web page download
  15. 数据库--oracle安装配置(本地安装的步骤及各种问题解决方案)
  16. 从事Java9年,27天熬夜把近年遇到的面试题收录成册全网开源!
  17. Database -- Oracle installation configuration (local installation steps and various problem solutions)
  18. Engaged in Java for 9 years, 27 days stay up late, the interview questions encountered in recent years included into a volume, the whole network open source!
  19. Java序列化 / 调用 Wildfly 服务接口异常:EJBCLIENT000409
  20. docker-compose部署Estack
  21. Redis 日志篇:系统高可用的杀手锏
  22. Java中把一个对象的值复制给另外一个对象引发的思考
  23. Java serialization / call wildfly service interface exception: ejbclient000409
  24. Docker compose deploy stack
  25. Mac下查看已安装的jdk版本及其安装目录
  26. Redis log: the killer of system high availability
  27. mybatis映射xml配置文件报错:<statement> or DELIMITER expected, got ‘id‘
  28. Thinking about copying the value of one object to another in Java
  29. IntelliJ IDEA 还能画思维导图,果然最强 IDE!
  30. vue使用sdk进行七牛云上传
  31. IntelliJ IDEA 还能画思维导图,果然最强 IDE!
  32. Spring原来还可以这么玩!阿里新产Spring全线宝典成功颠覆了我对Spring的认知!
  33. View the installed JDK version and its installation directory under mac
  34. Error in mybatis mapping XML configuration file: < statement > or delay expected, got 'ID‘
  35. IntelliJ IDEA 还能画思维导图,果然最强 IDE!
  36. Javascript性能优化【内联缓存】 V8引擎特性
  37. IntelliJ idea can also draw mind maps. It's really the strongest ide!
  38. Vue uses SDK to upload Qi Niu cloud
  39. IntelliJ idea can also draw mind maps. It's really the strongest ide!
  40. 深入理解 Web 协议 (三):HTTP 2
  41. Spring can still play like this! Ali's new spring product has successfully overturned my understanding of spring!
  42. IntelliJ idea can also draw mind maps. It's really the strongest ide!
  43. JavaScript performance optimization [inline cache] V8 engine features
  44. linux 配置java环境
  45. linux find 查找文件
  46. 深入理解 Web 协议 (三):HTTP 2
  47. IntelliJ IDEA 相关问题记录
  48. Deep understanding of Web protocol (3): http 2
  49. 深入理解 Web 协议 (三):HTTP 2
  50. 腾讯IEG开源AI SDK:自动化测试吃鸡、MOBA类游戏
  51. Mysql Command
  52. Configuring Java environment with Linux
  53. Find files in Linux
  54. docker-Dockerfile 创建镜像
  55. Redis Cluster
  56. 深入理解 Web 协议 (三):HTTP 2
  57. JavaScriptBOM操作
  58. JavaScriptBOM操作
  59. Deep understanding of Web protocol (3): http 2
  60. Record of IntelliJ idea related problems