当前位置:网站首页>JVM内存结构
JVM内存结构
2022-06-25 16:13:00 【张志明(秋招冲冲版)】

1.哪些部分会出现内存溢出
①不会出现内存溢出的区域-程序计数器
②内存溢出的两种类型
Ⅰ出现OutOfMemoryError的情况
1️⃣堆内存耗尽-对象越来越多,又一直在使用,不能被垃圾回收
2️⃣方法区内存耗尽-加载的类越来越多,很多框架会在运行期间动态产生新的类
3️⃣虚拟机栈累积-每个线程最多会占用1M内存,线程个数越来越多又长时间运行不销毁时
Ⅱ出现StackOverflowError的区域
1️⃣虚拟机栈内部-方法调用次数过多(递归没有合适的出口)
既然 Java 的垃圾回收机制能够自动的回收内存,怎么还会出现内存泄漏的情况呢?
这个问题,我们需要知道 GC 在什么时候回收内存对象,什么样的内存对象会被 GC 认为是“不再使用”的。
Java中对内存对象的访问,使用的是引用的方式。在 Java 代码中我们维护一个内存对象的引用变量,通过这个引用变量的值,我们可以访问到对应的内存地址中的内存对象空间。在 Java 程序中,这个引用变量本身既可以存放堆内存中,又可以放在代码栈的内存中(与基本数据类型相同)。 GC 线程会从代码栈中的引用变量开始跟踪,从而判定哪些内存是正在使用的。如果 GC 线程通过这种方式,无法跟踪到某一块堆内存,那么 GC 就认为这块内存将不再使用了(因为代码中已经无法访问这块内存了)。
通过这种有向图的内存管理方式,当一个内存对象失去了所有的引用之后,GC 就可以将其回收。反过来说,如果这个对象还存在引用,那么它将不会被 GC 回收,哪怕是 Java 虚拟机抛出 OutOfMemoryError 。
java既然存在gc线程,为什么还存在内存泄漏? - THISISPAN - 博客园1.既然 Java 的垃圾回收机制能够自动的回收内存,怎么还会出现内存泄漏的情况呢?这个问题,我们需要知道 GC 在什么时候回收内存对象,什么样的内存对象会被 GC 认为是“不再使用”的。 Java中https://www.cnblogs.com/panxuejun/p/5888817.html
方法区与永久代、元空间之间的关系
①方法区是JVM规范中定义的一块内存区域,用来存储类元数据、方法字节码
即使编译器
②永久代是Hotspot虚拟机对JVM规范的实现(1.8之前)
③元空间是Hotspot虚拟机对JVM规范的实现(1.8之后),使用本地内存
作为这些信息的存储空间
JVM内存参数
对于JVM内存配置参数: -Xmx10240m -Xms10240m -Xmn5120m -XX:SurvivorRatio=3
其中最小内存值和Survivor总大小分别是
-Xmx:jvm的最大内存数 1024m:10g
-Xms:jvm的最小内存数 1024m:10g
-Xms:jvm的新生代内存数 5120m:5g
-XX:SurvivorRatio=3 eden:from=3 所以新生代划分为5份 eden3 from1 to1
所以Survivor:2g 


边栏推荐
- Flutter assembly
- [untitled]
- Function and implementation of closures
- Error: homebrew core is a shallow clone
- GO语言-锁操作
- 【NLP】今年英语高考,CMU用重构预训练交出134高分,大幅超越GPT3
- [Third Party framework] retrofit2 (1) of network request framework -- Getting Started Guide
- Nsurlsession learning notes (III) download task
- 10 Super VIM plug-ins, I can't put them down
- 千万级购物车系统缓存架构方案
猜你喜欢
随机推荐
Mysql database multi table query
这项最新的调查研究,揭开多云发展的两大秘密
1-8file sharing in VMWare
【 apprentissage automatique】 cas de prévision et d'analyse de l'examen d'entrée à l'Université basé sur des séries chronologiques multiples
数字经济时代文化消费新特征
Bombard the headquarters. Don't let a UI framework destroy you
Beginner bug set
Ad domain login authentication
The first day of reading mysql45
Creating a uniapp project using hbuilder x
Apijson simple to use
One minute to familiarize yourself with the meaning of all fluent question marks
uniapp实现图片(单张/多张)预览
What are some tricks that novice programmers don't know?
Read mysql45 - a simple understanding of global locks and table locks
【蓝桥杯集训100题】scratch指令移动 蓝桥杯scratch比赛专项预测编程题 集训模拟练习题第14题
Collection overview, array encapsulation
Shuttle pop-up returns to the upper level
Multiple decorators decorate a function
1-8Vmware中的文件共享









