首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
Java内存模型与垃圾收集
时间:
2015-03-09 17:40:15
阅读:
151
评论:
0
收藏:
0
[点我收藏+]
标签:
java
虚拟机
内存
运行时数据区域:
线程私有:
1.程序计数器
如果正在执行的方法为Native方法,程序计数器值为空。
2.java虚拟机栈
虚拟机栈描述java方法执行的内存模型:每个方法被执行时会同时创建一个栈帧用于存储局部变量表、操作栈、动态链接、方法出口。从方法的调用到执行完成,对应栈帧在虚拟机栈中入栈到出栈过程。
3.本地方法栈
与虚拟机栈作用相似。区别为虚拟机栈为虚拟机执行java方法服务,本地方法栈为虚拟机使用到的Native方法服务。
线程共有:
1.Java堆
存放对象实例,垃圾回收机制主要管理区域。
2.方法区
存储已被虚拟机加载的类信息、常量、静态变量、即使编译器编译后的代码
对象访问:
引用定位对象的访问方式
1.使用句柄
Java堆中会划分出一块内存作为句柄池,reference中存放对象句柄地址,句柄中包括对象实例数据和类型数据各自的具体地址信息
2.直接指针
使用直接指针访问方式,reference中直接存储对象地址,如上图。
垃圾收集
1. 引用计数法
虚拟机并未采用!!!
收集算法直接,但并不能解决循环引用带来的内存泄露。
2.根搜索算法
通过一系列GC ROOTS 对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径成为引用链,当某对象到GC ROOTS没有引用链相连时,则证明此对象不可用。
GCROOTS对象:
虚拟机栈(栈帧中的本地变量表)中的引用的对象。
方法区中的类静态属性引用的对象。
方法区中常量引用的对象。
本地方法栈中JNI(即Native方法)引用的对象。
引用类型:
强引用 > 软引用 > 弱引用 > 虚引用
本文内容参考自: 深入理解JAVA虚拟机
Java内存模型与垃圾收集
标签:
java
虚拟机
内存
原文地址:http://blog.csdn.net/zjuwangg/article/details/44155963
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!