第2章 认识JAVA虚拟机的基本结构
2.1 虚拟机的内存划分
  
- 垃圾回收系统既回收堆,也回收方法区和直接内存
 - 直接内存其实是一块不受JVM管理的内存,但是收到计算机内存的限制
 
2.2 虚拟机参数
-Xmx:虚拟机最大可用内存
2.3 堆
  
新生对象在eden和s0或者s1,每一次垃圾回收幸存下来的对象会倒腾到另一个s区并且岁数增大,大到一定程度就放到老年代。
2.4 栈
栈对应线程私有内存,线程每次调用方法对应一个栈帧入栈,方法正常返回或者抛出异常对应栈帧出栈。
栈的深度决定函数调用的最大的次数,如果栈满了回在此区域发生OOM。

2.4.1 局部变量表
方法里的参数和局部变量存在于栈帧的局部变量表中。局部变量是GCRoots的重要组成部分,凡是被局部变量引用的对象都不可以回收。
2.4.2 操作数栈
字节码是一个面向栈的机器码
2.4.3 帧数据区
用来支持常量池解析。当方法需要使用常量池里的常量的时候,在帧数据区里存放指向该常量的指针。
第2章 认识JAVA虚拟机的基本结构的更多相关文章
- JVM规范系列第2章:Java虚拟机结构
		
本规范描述的是一种抽象化的虚拟机的行为,而不是任何一种(译者注:包括 Oracle 公司自己的 HotSpot 和 JRockit 虚拟机)被广泛使用的虚拟机实现. 记住:JVM规范是一种高度抽象行为 ...
 - JVM规范系列第6章:Java虚拟机指令集
		
一条 Java 虚拟机指令由一个特定操作的操作码和零至多个操作所使用到的操作数所构成. 虚拟机指令 = 操作码 + 操作数. 其中,操作码值分别为 254(0xfe)和 255(0xff),助记符分别 ...
 - java虚拟机的基本结构如图
		
1 java虚拟机的基本结构如图: 1)类加载子系统负责从文件系统或者网络中加载Class信息,加载的类信息存放于一块称为方法区的内存空间.除了类的信息外,方法区中可能还会存放运行时常量池信息,包括字 ...
 - 深入理解java虚拟机---对象的结构(九)
		
注意: 我们可以看到的就是InstanceData的数据. 先转载一篇文章作为开头,因为讲的非常详细,我就简单加工下放到这里: 对象结构 在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区 ...
 - 《深入理解java虚拟机》-目录结构
		
第一部分 走进Java第1章 走进Java 第二部分 自动内存管理机制 第2章 Java内存区域与内存溢出异常2.1 概述2.2 运行时数据区域2.2.1 程序计数器2.2.2 java虚拟机栈2.2 ...
 - Java核心技术卷阅读随笔--第3章【Java 的基本程序设计结构】
		
Java 的基本程序设计结构 现在, 假定已经成功地安装了 JDK,并且能够运行第 2 章中给出的示例程序.我们从现在开始将介绍 Java 应用程序设计.本章主要介绍程序设计的基本概念(如数据类型.分 ...
 - Java虚拟机的内存结构
		
我们都知道虚拟机的内存划分了多个区域,并不是一张大饼.那么为什么要划分为多块区域呢,直接搞一块区域,所有用到内存的地方都往这块区域里扔不就行了,岂不痛快.是的,如果不进行区域划分,扔的时候确实痛快,可 ...
 - [二]Java虚拟机 jvm内存结构 运行时数据内存 class文件与jvm内存结构的映射 jvm数据类型 虚拟机栈 方法区 堆 含义
		
前言简介 class文件是源代码经过编译后的一种平台中立的格式 里面包含了虚拟机运行所需要的所有信息,相当于 JVM的机器语言 JVM全称是Java Virtual Machine ,既然是虚拟机, ...
 - Java虚拟机——类的结构与加载
		
1.为什么Java可以跨平台 因为有java虚拟机,跨平台是因为字节码即class文件具有平台无关性,java代码会经过java虚拟机转换为字节码 2.class文件的结构 class文件主要是以8位 ...
 
随机推荐
- laravel框架详解
			
一.基础篇 1.概念 Laravel是一个有着美好前景的年轻框架,它的社区充满着活力,同时提供了完整而清晰的文档,而且为快速.安全地开发现代应用提供了必要的功能.2011年,Taylor Otwell ...
 - 花十分钟,让你变成AI产品经理
			
花十分钟,让你变成AI产品经理 https://www.jianshu.com/p/eba6a1ca98a4 先说一下你阅读本文可以得到什么.你能得到AI的理论知识框架:你能学习到如何成为一个AI产品 ...
 - mysql数据库表操作-表的主键索引和普通索引
			
数据库索引就象书的目录一样,如果在字段上建立了索引,那么以索引列为查询条件时可以加快查询数据的速度.查询数据库,按主键查询是最快的,每个表只能有一个主键列,但是可以有多个普通索引列,主键列要求列的所有 ...
 - 什么是CSR以及CSR的作用和生成
			
什么是CSR以及CSR的作用和生成 来源:https://www.trustasia.com/news-201801-what-is-the-role-and-generation-of-csr-an ...
 - Android JNI中C调用Java方法
			
背景需求 我们需要在JNI的C代码调用Java代码.实现原理:使用JNI提供的反射借口来反射得到Java方法,进行调用. JNI关键方法讲解. 1. 在同一个类中,调用其他方法 JNIEXPORT v ...
 - Android面试题总结(不定期更新、附答案)
			
1.Activity的启动模式? activity一共有4种启动模式:standard.singleTop singleTask .singleInstance standard:(标准模式)默认的就 ...
 - jsp笔记----jsp常用的的获取项目的根路径
			
<% String path = request.getContextPath(); String basePath = request.getScheme() + "://" ...
 - spring4笔记----报错publicid systemid之间要有空格的解决方法
			
<?xml version="1.0" encoding="GBK"?> <beans xmlns:xsi="http://www. ...
 - python 函数参数为*和**的作用与区别
			
def function(*args):print(args) 中*的作用:表示此时参数为一个元祖. def function(**args):print(args)中**的作用:表示此时参数为一个字 ...
 - Python3 socket网络编程(一)
			
Socket的定义 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并进行连接,如发送和接受数据.为了建 ...