JVM<一>----------运行时数据区域
参考:1.JVM Specification: http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.5
2.《深入理解Java虚拟机》
刚开始看JVM Specification ,说实话由于专业英语不过关,有些关键词总是看不懂意思,后来参考.《深入理解Java虚拟机》方能感悟到JVM的强大。 我们就先从运行时数据区域开始
一.运行时数据区域分配图
The Java Virtual Machine defines various run-time data areas that are used during execution of a program. Some of these data areas are created on Java Virtual Machine start-up and are destroyed only when the Java Virtual Machine exits. Other data areas are per thread. Per-thread data areas are created when a thread is created and destroyed when the thread exits.
JVM在执行程序时定义了多个运行时数据区域,一部分数据区域随 JVM 的创建而创建, 随 JVM 的退出而销毁,
其他的数据区域随单个线程的创建而创建,随单个线程的退出而销毁

二.各数据块介绍
2.1 跟随JVM的数据区域
2.1.1 Heap
<1>JVM的Heap区域是对于所有Thread 都是共享的
<2>Heap 是类的对象和数据分配内存的地方
<3>Heap JVM 的创建而创建, 随 JVM 的退出而销毁
<4>Heap存储对象的存储空间由自动存储管理系统GC来释放,并且对象从来都不是显示的释放。
<5>JVM没有固定的自动内存管理系统,一般根据系统的设计需求采用适合的内存管理系统
<6>Heap 的内存大小可以是固定的 也可以根据需求变化
<7>存放Heap的内存块可以是不连续的
<8>如果根据计算,自动内存管理系统不能提供更多的内存给Heap,JVM将抛出outOFMemoryError
2.1.1 Method Area

<1>JVM的Method Area 区域是对于所有Thread 都是共享的
<2>Method Area 类似于:存放传统语言编译后的代码的内存区域 或者 运行系统过程中的文本区域 (第一个例子要好理解点)
它存放单个类的结构如:运行时常量池,字段,方法数据,构造方法和普通方法的代码,同样包括在类中使用的实例、接口初始化的特殊方法。
<3>Method Area 随JVM 的创建而创建, 随 JVM 的退出而销毁
<4>Heap逻辑上是Heap的一部分,但GC并不会对他产生任何影响
<5>暂无针对编译后的代码管理的策略和内存分配方法。
<6>Heap 的内存大小可以是固定的 也可以根据需求变化
<7>存放Heap的内存块可以是不连续的
<8>如果方法区不能满足内存分配请求,JVM将抛出outOFMemoryError
JVM<一>----------运行时数据区域的更多相关文章
- JVM学习-运行时数据区域
目录 前言 运行时数据区 程序计数器 Java虚拟机栈 局部变量表 基础数据类型 对象引用 returnAddress 操作数栈 动态链接 方法返回地址 Java堆 方法区 类型信息 字段描述符 方法 ...
- JVM学习笔记:Java运行时数据区域
JVM执行Java程序的过程中,会使用到各种数据区域,这些区域有各自的用途.创建和销毁时间.根据<Java虚拟机规范>,JVM包括下列几个运行时数据区域,如下图所示: 其中红色部分是线程私 ...
- 一. JVM发展史,运行时数据区域,四大引用
一.JVM的出现 JVM将字节码解释成不同os下的机器指令,有了jvm,java语言在不同平台上运行时不需要重新编译 虚拟机发展史 (1)Sun Classic classic jvm要么采用纯解释器 ...
- JVM运行时数据区域
上面已经聊过JVM是什么东东,也谈过了JVM内存的垃圾回收机制.这一篇博客我们来聊聊JVM运行时数据区域. JVM运行时数据区域由5块部分组成,分别是堆,方法区,栈,本地方法栈,以及程序计数器组成. ...
- JVM 内存区域 (运行时数据区域)
JVM 内存区域 (运行时数据区域) 链接:https://www.jianshu.com/p/ec479baf4d06 运行时数据区域 Java 虚拟机在执行 Java 程序的过程中会把它所管理的内 ...
- 深入理解Java虚拟机 -- 读书笔记(1):JVM运行时数据区域
深入理解Java虚拟机 -- 读书笔记:JVM运行时数据区域 本文转载:http://blog.csdn.net/jubincn/article/details/8607790 本系列为<深入理 ...
- [jvm]运行时数据区域详解
了解虚拟机是怎么使用内存的,有助于我们解决和排查内存泄漏和溢出方面的问题.详解java虚拟机内存的各个区域,分析这些区域的作用服务对象以及可能发生的问题. 一.运行时数据区域 java虚拟机在执行ja ...
- JVM学习笔记(1)--运行时数据区域
运行时数据区域 相对于c,c++.程序设计时,java并不需要手动释放或者创建内存用于存放程序,这的确使得java开发变得容易和轻松,一旦有一天出现了内存泄漏或者内存溢出的问题,如果不了解JVM虚拟机 ...
- JVM 运行时数据区域划分
目录 前言 什么是JVM JRE/JDK/JVM是什么关系 JVM执行程序的过程 JVM的生命周期 JVM垃圾回收 JVM的内存区域划分 一.运行时数据区包括哪几部分? 二.运行时数据区的每部分到底存 ...
随机推荐
- 解决BeanNotOfRequiredTypeException: Bean named 'XXX' must be of type XXX, but was actually of type XXX问题
Java新手,困扰了一下午. 发布时总是报这样一个错误. org.springframework.beans.factory.BeanCreationException: Error creating ...
- [BZOJ 1052][HAOI2007]覆盖问题(二分答案)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1052 分析: 挺有想法的一道题,先二分答案ans,主要是判断的问题. 首先可以弄出把所 ...
- 20.C#LINQ基础和简单使用(十一章11.1-11.2)
终于看到了第11章,之前虽然也有看过,但没有太仔细,在工作中也偶尔会使用,但不明白其中的原理,那现在就来讲讲LINQ,做一做书虫~~ 首先先了解下LINQ的三个要点: LINQ不能把非常复杂的查询表达 ...
- web前端开发教程系列-1 - 前端开发编辑器介绍
目录: 前言 一. Webstorm 1. 优点 2. 缺点 3. 教程 4. 插件 5. 技巧 二. SublimeText 1. 优点 2. 缺点 3. 教程 4. 插件 5. 技巧 前言 由于很 ...
- 每天一个linux命令(18):find 命令概览
Linux 下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所 以它的选项也很多,其中大部分选项都值得我们 ...
- 幻灯片插件FlexSlider -- Amaze UI幻灯片参数
用了Amaze UI 的人就知道,其幻灯片插件是 data-am-slider='{}'来传参数的:(以下代码来自Amaze UI 官网) <div data-am-widget="s ...
- Java基础-String、StringBuffer、StringBuilder
看下面这段代码: public class Main { public static void main(String[] args) { String string = ""; ...
- Hibernate-入门教程
首先了解hibernate的目录结构 . +lib antlr.jar cglib-full.jar asm.jar asm-attrs.jars commons-collections.jar co ...
- PL/0编译器(java version) - Interpreter.java
1: package compiler; 2: 3: import java.io.BufferedReader; 4: import java.io.BufferedWriter; 5: imp ...
- ubuntu自动关闭屏幕显示器
在程序中系统调用如下两个命令,可以关闭显示器. 1,xset dpms force off 2,system("vbetool dpms off"); 因为应用要在ubuntu开机 ...