一、引言

  JVM虚拟机内存回收机曾迷惑了不少人,文本从JVM实现机制的角度揭示JVM内存回收的原理和机制。

一、Java平台逻辑架构

二、JVM物理结构

通过从JVM物理结构图我们可以看到:

1.JVM两个子系统:类加载子系统和执行引擎子系统;

2.JVM两个组件:本地接口方法组件和内存空间组件。

2.JVM内存空间分为:Java堆,Java栈、方法区和本地方法区

关键词:我们经常讨论的JVM内存回收机制就是指Java堆内存回收机制。

四、JVM内存组成结构

上图所示四部分即为JVM内存组成结构。

五、Java堆内存结构

JVM堆内存分为三部分

(1)Yong

(2)Tenured

(3)Pern

内存申请过程,按照Y-T进行溢出拷贝。通常我们说的JVM内存回收总是在指堆内存回收,确实只有堆中的内容是动态申请分配的,所以以上对象的年轻代和年老代都是指的JVM的Heap空间,而持久代则是之前提到的MethodArea,不属于Heap。

六、意见和建议

(1)对象清理:无用对象和中间对象手动设置为null,执行内存回收;

(2)对象池:使用对象池实现内存空间的复用;

(3)JVM调优:通过配置JVM的配置参数控制JVM垃圾回收。

七、遗留问题

(1)JVM内存回收的触发机制是什么?

(2)JVM内存回收真的是安全的吗?

(3)JVM会出现内存泄露吗?

学习中,如果你有答案告诉我把!

Java技术专题之JVM逻辑内存回收机制研究图解版相关推荐

  1. Java技术专题之JVM你的内存泄露了吗?

    一.从一个例子开始 关于JVM的内存泄露,让我们从下面一个例子开始吧,大家来判断一下如果按照下面这种分配方式,会不会出现内存泄露呢? 1 import java.util.List; 2 import ...

  2. Java jvm 内存回收机制

    原文:Java jvm 内存回收机制 源代码下载地址:http://www.zuidaima.com/share/1782298898271232.htm 在Java中,它的内存管理包括两方面:内存分 ...

  3. Java内存回收机制基础[转]

    原文链接:http://blog.jobbole.com/37273/ 在Java中,它的内存管理包括两方面:内存分配(创建Java对象的时候)和内存回收,这两方面工作都是由JVM自动完成的,降低了J ...

  4. Java的内存回收机制

    在Java中,它的内存管理包括两方面:内存分配(创建Java对象的时候)和内存回收,这两方面工作都是由JVM自动完成的,降低了Java程序员的学习难度,避免了像C/C++直接操作内存的危险.但是,也正 ...

  5. Java进阶3. 内存回收机制

    Java进阶3. 内存回收机制 20131029 前言: 学过C++的都知道,C++中内存需要程序员自己维护.说道这里,很多开发的同学就感觉很痛苦,当他转向Java的时候,就会说你看Java多好啊,程 ...

  6. JAVA的内存回收机制(快速入门版)

    java内存回收机制 内存回收,是JVM中垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制 引用 : java中什么是引用? Person xiaoi =new ...

  7. Java虚拟机(三)——初识JVM的垃圾回收机制

    前言 对于程序计数器.虚拟机栈.本地方法栈这三个部分而言,其生命周期与相关线程有关,随线程而生,随线程而灭.并且这三个区域的内存分配与回收具有确定性,因为当方法结束或者线程结束时,内存就自然跟着线程回 ...

  8. Python内存回收机制 - 邱乘屹的个人技术博客

    Python内存回收机制 引用计数 标记-清除 分代回收 由于面试中遇到了内存回收的问题,转载学习和总结这个问题. 我们从三个方面简单来了解一下Python的内存回收机制. 引用计数 当一个对象的引用 ...

  9. JVM的内存管理机制详解

    一.为什么要学习内存管理? Java与C++之间有一堵由内存动态分配和垃圾回收机制所围成的高墙,墙外面的人想进去,墙里面的人出不来 对于Java程序员来说,JVM给我们提供了自动内存管理机制,不需要既 ...

最新文章

  1. 关于浮点数的原理详解
  2. iframe 自适应高度 [记录]
  3. QT的QFontDialog类的使用
  4. 权威赛事来了!千言-文本生成评测启动,聚焦NLG技术痛点
  5. 诗与远方:无题(二十)
  6. Java中多线程访问冲突的解决方式
  7. Coinbase在上市前选择在Reddit线上路演
  8. 转: 如何使用jstack分析线程状态
  9. JS错误 theForm.submit();SCRIPT3: 找不到成员。
  10. java structs_Java之Structs框架初探
  11. Python+Opencv身份证号码区域提取及识别
  12. 2020年10月最新免费加速下载百度网盘文件方法
  13. Cocos2d-xV3.17.2获取csb文件按钮组件并绑定事件
  14. 图深度学习——复杂图嵌入:异质图,二分图,多维图,超图,符号图,动态图
  15. 利用phantomjs动态生成图片
  16. wps演示文稿训练心得---实用版
  17. isolar bsw配置工具的基本配置CanIf
  18. Pygame飞机大战(四)——创建己方飞机的类,并添加子弹吧
  19. 在暴风上市前,虚拟现实团队就跑了
  20. 计算机网络测试仪型号,CTC HCT-BERT/C 2M误码测试仪

热门文章

  1. 基于VUE+TS中引用ECharts的中国地图和世界地图密度表
  2. [转]页面回收的理解
  3. Akka系列(二):Akka中的Actor系统
  4. 在jquery的ajax方法中的success中使用return要注意的问题
  5. 桃李春风一杯酒,江湖夜雨十年灯
  6. PL/SQL 12.0配置连接远程Oracle数据库
  7. 8.6 edu25 ,577#div2 CF补题(二分 ,dp 与 贪心
  8. C++ const用法
  9. ElasticSearch 6.4.3 启动报错: [Cannot assign requested address: bind]
  10. [洛谷P3807]【模板】卢卡斯定理