文档章节

JVM内存知识点

风格若干
 风格若干
发布于 2016/08/10 17:28
字数 440
阅读 20
收藏 3

大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区) ,Heap(堆) , Program Counter Register(程序计数器) ,   VM Stack(虚拟机栈,也有翻译成JAVA 方法栈的),Native Method Stack  ( 本地方法栈 ),其中Method Area 和  Heap 是线程共享的  ,VM Stack,Native Method Stack  和Program Counter Register  是非线程共享的。为什么分为 线程共享和非线程共享的呢?请继续往下看。

首先我们熟悉一下一个一般性的 Java 程序的工作过程。一个 Java 源程序文件,会被编译为字节码文件(以 class 为扩展名),每个java程序都需要运行在自己的JVM上,然后告知 JVM 程序的运行入口,再被 JVM 通过字节码解释器加载运行。那么程序开始运行后,都是如何涉及到各内存区域的呢?

概括地说来,JVM初始运行的时候都会分配好 Method Area(方法区) 和Heap(堆) ,而JVM 每遇到一个线程,就为其分配一个 Program Counter Register(程序计数器) ,   VM Stack(虚拟机栈)和Native Method Stack  (本地方法栈), 当线程终止时,三者(虚拟机栈,本地方法栈和程序计数器)所占用的内存空间也会被释放掉。这也是 为什么我把内存区域分为线程共享和非线程共享的原因,非线程共享的那三个区域的生命周期与所属线程相同,而线程共享的区域与JAVA程序运行的生命周期相 同,所以这也是系统垃圾回收的场所只发生在线程共享的区域(实际上对大部分虚拟机来说知发生在Heap上)的原因。

© 著作权归作者所有

共有 人打赏支持
上一篇: 数据区笔记
风格若干
粉丝 6
博文 87
码字总数 53598
作品 0
西安
程序员
私信 提问
JVM内存结构 VS Java内存模型 VS Java对象模型

Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模型和...

Java架构
07/11
0
0
JVM系列开篇:为什么要学虚拟机?

跟许多人一样,我一开始接触 Java 虚拟机只是因为面试需要用到,所以硬着头皮看看。所以很多人对于为什么要学虚拟机这个问题,他们的答案都是:因为面试。但我经过了几年的学习和实战,我发现...

陈树义
11/06
0
0
【Java并发专题】27篇文章详细总结Java并发基础知识

努力的意义,就是,在以后的日子里,放眼望去全是自己喜欢的人和事! github:https://github.com/CL0610/Java-concurrency,欢迎题issue和Pull request。所有的文档都是自己亲自码的,如果觉...

你听___
05/06
0
0
[转]JVM知识点题目

JVM是Java程序的运行环境,因此对于JVM的掌握有助于理解Java程序的执行以及编写,尤其是运行时碰到的一些诡异问题,那么怎么样能考察自己对于JVM关键知识点的掌握情况,帮助学习JVM机制呢,在...

inferrrrrr
2009/11/07
285
0
深入理解java虚拟机学习笔记(一)JVM内存模型

上周末搬家后,家里的宽带一直没弄好,跟电信客服反映了N遍了终于约了个师傅明天早上来迁移宽带,可以结束一个多星期没网的痛苦日子了。这段时间也是各种忙,都一个星期没更新博客了,再不写...

07/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【Visual Studio 扩展工具】使用 ComponentOne迷你图控件,进行可视化数据趋势分析

概述 迷你图 —— Sparklines是迷你的轻量级图表,有助于快速可视化数据。 它们是由数据可视化传奇人物Edward Tufte发明的,他将其描述为“数据密集,设计简单,字节大小的图形。”虽然迷你图...

葡萄城技术团队
13分钟前
2
0
java中重试的使用工具

spring-retry easy-retry guava-retry spring-retry中应该注意的东西 @EnableRetry Retryable注解 被注解的方法发生异常时会重试 value:指定发生的异常进行重试 include:和value一样,默认...

writeademo
24分钟前
2
0
NEO改进协议提案8(NEP-8)

文章目录 摘要 动机 原理 详述 CALL_I CALL_E CALL_ED CALL_ET CALL_EDT 向后兼容性 实现 摘要 本NEP提议NeoVM计算栈堆栈隔离,以确保动态调用的安全性,并为将来的新功能提供支持。 动机 现...

NEO-FANS
27分钟前
1
0
TiDB DevCon 2019 报名开启:年度最高规格的 TiDB 技术大会

年度最高规格的 TiDB 技术大会 海内外动态及成果的综合呈现 最新核心技术解读 多个成果首次亮相 2019 RoadMap 展望 14 位海内外基础架构领域技术大咖 8 个跨行业多场景的用户实战经验 1 小时...

TiDB
28分钟前
0
0
struts2返回json

返回action中成员变量jsonResult,注意设置get set方法 struts配置文件 <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Co......

安卓工程师王恒
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部