【JVM学习笔记(4)-运行时数据区详解之程序计数器与虚拟机栈】教程文章相关的互联网学习教程文章

《深入Java虚拟机学习笔记》- 第18章 finally子句【代码】【图】

本章主要介绍字节码实现的finally子句。包括相关指令以及这些指令的使用方式。此外,本章还介绍了Java源代码中finally子句所展示的一些令人惊讶的特性,并从字节码角度对这些特征进行了解释。1、微型子例程 字节码中的finally子句表现的很像“微型子例程”。Java虚拟机在每个try语句块和与其相关的catch子句的结尾处都会“调用”finally子句的子例程。finally子句结束后(这里的结束指的是finally子句中最后一条语句正常执行完...

(转)《深入理解java虚拟机》学习笔记3——垃圾回收算法

Java虚拟机的内存区域中,程序计数器、虚拟机栈和本地方法栈三个区域是线程私有的,随线程生而生,随线程灭而灭;栈中的栈帧随着方法的进入和退出而进行入栈和出栈操作,每个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这三个区域的内存分配和回收都具有确定性。垃圾回收重点关注的是堆和方法区部分的内存。常用的垃圾回收算法有:(1).引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器...

【Java】「深入理解Java虚拟机」学习笔记(4)- 类文件结构

我为什么喜欢Java,另重要原因就是跨平台,就是WORA。  程序员是爽了,但肯定有人要为你遮风挡雨,解决WORA的基石就是字节码+虚拟机。?Tip  Java生态中的语言有很多,处理Java本身还有Scala、Groovy和Jruby。然而虚拟机只管跟底层操作系统打交道,对上层它只认字节码。那么跟各种语言打交道的就是翻译家—编译器。字节码的载体就是.class文件。  字节码,是以8个字节为单位的二进制文件,整个文件中排列紧凑,从头到尾不含一...

Linux学习笔记之——ssh连接虚拟机中的ubuntu12.0.4

Linux学习笔记之——ssh连接虚拟机中的ubuntu12.0.4 摘要:主要是解决不能使用ssh远程ubuntu的问题、使用的远程工具是putty、也可以使用xshell、ubunut12.0.4是装在虚拟机中的、不过这个应该没有什么影响。 一:问题的出现 前两天使用VMware装了一个ubuntu12.0.4之后、因为常常使用命令行、又喜欢在虚拟机与实体机中切来切去、感觉很不方便、就想在xp中远程ubuntu、遇到了点小意外、经过一会调试解决成功、...

《深入Java虚拟机学习笔记》- 第1章 Java体系结构【图】

一、体系结构组成当编写并运行一个Java程序时,就同时体验了这四种技术。用Java语言编写源代码,编译成Java Class文件,然后再在Java虚拟机上运行class文件。当编写程序时,通过调用类中的方法来访问系统资源。当程序运行的时候,它通过调用class文件中的方法来满足程序的Java API调用。Java程序设计语言Java Class文件格式Java应用编程接口Java虚拟机二、Java虚拟机Java虚拟机的主要任务是装载class文件并执行其中的字节码。JVM...

《深入Java虚拟机学习笔记》- 第10章 栈和局部变量操作

Java栈和局部变量操作Java虚拟机是基于栈的机器,几乎所有Java虚拟机的指令都与操作数栈相关。栈操作包括把常量压入操作数栈、执行通用的栈操作、在操作数栈和局部变量之间往返传输值。1常量入栈操作:操作码在执行常量入栈操作之前,使用三种方式指明常量的值:常量值隐含包含在操作码内部、常量值在字节码中如同操作数一样跟随在操作码之后,或者从常量池中取出常量。1.1常量值隐含包含在操作码内部:将一个字长的常量压入栈操作...

(转)《深入理解java虚拟机》学习笔记4——Java虚拟机垃圾收集器

Java堆内存被划分为新生代和年老代两部分,新生代主要使用复制和标记-清除垃圾回收算法,年老代主要使用标记-整理垃圾回收算法,因此java虚拟中针对新生代和年老代分别提供了多种不同的垃圾收集器,JDK1.6中Sun HotSpot虚拟机的垃圾收集器如下:图中如果两个垃圾收集器直接有连线,则表明这两个垃圾收集器可以搭配使用。(1).Serial垃圾收集器:Serial是最基本、历史最悠久的垃圾收集器,使用复制算法,曾经是JDK1.3.1之前新生代唯一...

深入理解Java虚拟机 - 学习笔记 1

Java内存区域程序计数器 (Program Counter Register)是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)都只会执行一个线程中的指令。因此每个线程都需要有一...

(转)《深入理解java虚拟机》学习笔记9——并发编程(一)

随着多核CPU的高速发展,为了充分利用硬件的计算资源,操作系统的并发多任务功能正变得越来越重要,但是CPU在进行计算时,还需要从内存读取输出,并将计算结果存放到内存中,然而由于CPU的运算速度比内存高几个数量级,CPU内的寄存器数量和容量有限,为了不让CPU长时间处于等待内存的空闲状态,在CPU和内存之间引入了速度接近CPU的高速缓存Cache作为CPU和内存之间的缓冲。计算机硬件并发的原理如下:Java虚拟机对并发的支持类似于计...

虚拟机联网及远程连接-Linux基础环境命令学习笔记

1.ifconfig命令=ip a命令,查看IP地址    网卡默认名称eth0.    Bcast 广播地址2.xshell or secureCRT远程连接 ssh root@地址  xmanager 远程桌面连接  filezilla(类ftp工具)  文件传输  Notepad++  远程编辑文本文件3.clear清屏4.虚拟机联网注意事项   a.连接方式-默认NAT   b.虚拟机连不上:确定VMNET8网卡IP地址,最后一位为.1,前三位由VMWORKSTATION编辑-网络编辑器确定          ...

Java虚拟机学习笔记【图】

一 内存管理运行时数据区域 程序计数器线程私有内存; 如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址; 如果正在执行的是本地(Native)方法,这个计数器值则应为空(Undefined); 唯一没有规定任何OutOfMemoryError情况的区域Java虚拟机栈线程私有; 虚拟机栈描述的是Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧用于存储局部变量表、操...

SQLite学习笔记(十一)&&Sqlite虚拟机原理【代码】【图】

我们知道任何一种关系型数据库管理系统都支持SQL(Structured Query Language),相对于文件管理系统,用户不用关心数据在数据库内部如何存取,也不需要知道底层的存储结构,熟悉SQL,就能熟练使用数据库。SQL的引入,使得数据库系统需要将SQL转换为内部的数据结构,然后与底层的存储结构打通,达到用户存取数据的目的。所谓的SQL对应的数据结构,我们通常称之为执行计划,每个SQL执行前,都需要生成执行计划,然后执行。SQL如何变化...

JVM学习笔记(4)-运行时数据区详解之程序计数器与虚拟机栈【图】

运行时数据区详解<1>程序计数器与虚拟机栈 一.程序计数器(PC寄存器)PC Register介绍作用: 举例说明两个常见问题1:使用PC寄存器存储字节码指令地址有什么用呢2: PC寄存器为什么会被设定为线程私有cpu时间片二.虚拟机栈虚拟机栈概述虚拟机栈出现的背景内存中的栈与堆虚拟机栈基本内容栈的特点(优点) 栈中可能会发生的异常设置栈内存的大小示例:栈的存储单位栈中存储什么:栈运行原理方法的两种结束方式 栈帧的内部结构 局部变量表jcla...

JVM-类与类加载器-《深入理解Java虚拟机》学习笔记【图】

类与类加载器 双亲委派模型从 Java 虚拟机角度讲,只存在两种类加载器:一种是启动类加载器(C++ 实现,是虚拟机的一部分);另一种是其他所有类的加载器(Java 实现,独立于虚拟机外部且全继承自 java.lang.ClassLoader)启动类加载器 加载 lib 下或被 -Xbootclasspath 路径下的类扩展类加载器 加载 lib/ext 或者被 java.ext.dirs 系统变量所指定的路径下的类应用程序类加载器 ClassLoader负责,加载用户路径上所指定的类库。 除...

Java虚拟机(JVM)的学习笔记——运行时数据区

java文件经过编译变成class文件,通过类加载器加载到JVM里面运行 JVM里面有一个重要组成部分就是运行时数据区 运行时数据区包括线程共享部分(堆、方法区),和线程私有部分(程序计数器、本地方法栈、虚拟机栈) 堆:存放对象实例 有eden区、from区、to区、老年代区(内存分配比例 8:1:1:?)对象分配原则: 刚创建的对象通常都在eden区,但是一些大对象比如说字符串、数组,就会直接放到老年代区,不会再进行动态提升 在对...