博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jvm 与java内存模型相关简要概念
阅读量:6617 次
发布时间:2019-06-25

本文共 944 字,大约阅读时间需要 3 分钟。

  jvm

  jvm执行引擎执行由jvm类加载器加载完毕的各个类的字节码文件,由java编译器将java源代码编译为.class字节码文件

  jvm在执行java程序过程中,将自己管理的内存划分为若干不同的数据区域

  Java内存的概念:jvm分配的一段空间,用来管理程序运行时的数据与相关信息,被称为运行时数据区Runtime Data Area;

  运行时数据区:两部分,线程私有和共享数据区。线程私有包括本地方法区、虚拟机栈、程序计数器;共享数据区包含java堆、方法区(内含常量池)

  程序计数器:记录正在执行的虚拟机字节码文件地址

  虚拟机栈:方法执行的内存区方法执行时会在栈中创建栈帧,生命周期与线程相同,方法执行过程对应入栈出栈

  本地方法区:为虚拟机使用的Native方法提供的内存空间

  java堆:jvm管理的内存中最大的一块,gc管理的主要区域。在主内存中,随着jvm的创建,存储对象本身及数组

  方法区:存放已被虚拟机加载的类信息、常量、静态变量、编译器编译后的代码等数据

  常量池:存放编译器生存的各种字面量和符号引用,方法区的一部分

  内存模型:jmm,java memory model 。定义了jvm在计算机内存ram中的工作方式,java线程间通信由jmm控制,决定一个线程对共享变量的写入何时对另一个线程可见

  抽象角度:jmm定义了线程与主内存之间的抽象关系,线程之间的共享变量存储在主内存(堆内存),线程私有的本地内存存储了读写共享变量的副本

  线程之间通信机制:共享内存和消息传递

  内存模型与运行时数据区的区别:jvm运行时数据区定义了jvm运行期内存的管理划分,内存模型定义了程序中共享变量的访问规则,保障原子性有序性可见性实现线程协同及数据安全

  jvm回收策略:在 jvm管理的内存空间将堆空间分老年代及年轻代,创建没多久就会消亡的对象存在年轻代,生命周期长久的实例对象存放老年代

  jvm判断对象是否应该被回收?建立有向图的方式,通过gc roots向下遍历,对象不可达状态,标记,后期gc回收

  

转载于:https://juejin.im/post/5badd69a5188255c7566d758

你可能感兴趣的文章
linux scp远程拷贝文件及文件夹
查看>>
【原创】Loadrunner使用json格式请求数据并参数化
查看>>
MySQL导入SQL文件过大或连接超时的解决办法
查看>>
Java开发命名规范总结
查看>>
机器学习_生成式模型与判别式模型
查看>>
redhat5.8 alt+ctrl+f1 黑屏
查看>>
python with的用法
查看>>
NYOJ 16 嵌套矩形 DP
查看>>
空间统计笔记之五(Mapping Clusters&Utility工具集)
查看>>
老K漫谈区块链的共识(1)——免信任的共识机制
查看>>
android设备休眠
查看>>
(效率低下)77. Combinations C++回溯法 组合
查看>>
写出漂亮的代码之主属性方法
查看>>
[LeetCode] Contains Duplicate III
查看>>
经济周期
查看>>
启动新进程
查看>>
KubeCon + CloudNativeCon论坛2019上海
查看>>
【总结整理】已读功能---摘自《馒头商学院》
查看>>
非抢占式系统优点
查看>>
TPYBoard V102:能跑Python的stm32开发板
查看>>