java对象的访问方式句柄和直接指针介绍

建立对象是为了使用对象,我们的Java程序需要通过栈上的reference数据来操作堆上的 具体对象。由于reference类型在Java虚拟机规范中只规定了一个指向对象的引用,并没有定 义这个引用应该通过何种方式去定位、访问堆中的对象的具体位置,所以对象访问方式也是 取决于虚拟机实现而定的。目前主流的访问方式有使用句柄和直接指针两种。 如果使用句柄访问的话,那么Java堆中将会划分出一块内存来作为句柄池,reference中 存储的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自的具体地址信 息,如图2-2所示。


如果使用直接指针访问,那么Java堆对象的布局中就必须考虑如何放置访问类型数据的 相关信息,而reference中存储的直接就是对象地址,如图2-3所示。

这两种对象访问方式各有优势,使用句柄来访问的最大好处就是reference中存储的是稳定的句柄地址,在对象被移动(垃圾收集时移动对象是非常普遍的行为)时只会改变句柄中的实例数据指针,而reference本身不需要修改。 使用直接指针访问方式的最大好处就是速度更快,它节省了一次指针定位的时间开销, 由于对象的访问在Java中非常频繁,因此这类开销积少成多后也是一项非常可观的执行成本。就本书讨论的主要虚拟机Sun HotSpot而言,它是使用第二种方式进行对象访问的,但从整个软件开发的范围来看,各种语言和框架使用句柄来访问的情况也十分常见。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Visual C++ 2005入门经典》的源代码及课后练习答案 对应的书籍资料见: Visual C++ 2005入门经典 基本信息 原书名: Ivor Horton's Beginning Visual C++ 2005 原出版社: Wiley 作者: (美)Ivor Horton 译者: 李颂华 康会光 出版社:清华大学出版社 ISBN:9787302142713 上架时间:2007-2-12 出版日期:2007 年1月 开本:16开 页码:1046 版次:1-1 编辑推荐   本书由编程语言先驱者Ivor Horton倾力而著,是国内第一本全面、深入介绍Visual C++ 2005的经典之作! 内容简介   本书系编程语言先驱者Ivor Horton的经典之作,是学习C++编程最畅销的图书品种之一,不仅涵盖了Visual C++ .NET编程知识,还全面介绍了标准C++语言和.NET C++/CLI。本书延续了Ivor Horton讲解编程语言的独特方法,从中读者可以学习Visual C++ 2005的基础知识,并全面掌握在MFC和Windows Forms中访问数据源的技术。此外,本书各章后面的习题将有助于读者温故而知新,并尽快成为C++高效程序员。...    作译者   Ivor Horton是世界著名的计算机图书作家,主要从事与编程相关的顾问及撰写工作,曾帮助无数程序员步入编程的殿堂。他曾在IBM工作多年,能使用多种语言进行编程(在多种机器上使用汇编语言和高级语言),设计和实现了实时闭环工业控制系统。Horton拥有丰富的教学经验(教学内容包括C、C++、Fortran、PL/1、APL等),同时还是机械、加工和电子CAD系统、机械CAM系统和DNC/CNC系统方面的专家。Ivor Horton还著有Beginning Visual C++ 6、Beginning C Programming和Beginning Java 2等多部入门级好书。 目录 封面 -18 前言 -14 目录 -9 第1章 使用Visual C++ 2005编程 1 1.1 .NET Framework 1 1.2 CLR 2 1.3 编写C++应用程序 3 1.4 学习Windows编程 4 1.4.1 学习C++ 4 1.4.2 C++标准 5 1.4.3 控制台应用程序 5 1.4.4 Windows编程概念 6 1.5 集成开发环境简介 7 1.6 使用IDE 9 1.6.1 工具栏选项 9 1.6.2 可停靠的工具栏 10 1.6.3 文档 11 1.6.4 项目和解决方案 11 1.6.5 设置Visual C++ 2005的选项 23 1.6.6 创建和执行Windows应用程序 24 1.6.7 创建Windows Forms应用程序 26 1.7 小结 29 第2章 数据、变量和计算 31 2.1 C++程序结构 31 2.1.1 程序注释 36 2.1.2 #include指令——头文件 37 2.1.3 命名空间和using声明 37 2.1.4 main()函数 38 2.1.5 程序语句 38 2.1.6 空白 40 2.1.7 语句块 41 2.1.8 自动生成的控制台程序 41 2.2 定义变量 42 2.2.1 命名变量 43 2.2.2 C++中的关键字 43 2.2.3 声明变量 44 2.2.4 变量的初值 44 2.3 基本数据类型 45 2.3.1 整型变量 45 2.3.2 字符数据类型 46 2.3.3 整型修饰符 47 2.3.4 布尔类型 48 2.3.5 浮点类型 48 2.3.6 ISO/ANSI C++中的基本类型 49 2.3.7 字面值 50 2.3.8 定义数据类型的同义词 50 2.3.9 具有特定值集的变量 51 2.3.10 指定枚举常量的类型 52 2.4 基本的输入/输出操作 53 2.4.1 从键盘输入 53 2.4.2 到命令行的输出 53 2.4.3 格式化输出 54 2.4.4 转义序列 55 2.5 C++中的计算 57 2.5.1 赋值语句 57 2.5.2 算术运算 58 2.5.3 计算余数 63 2.5.4 修改变量 63 2.5.5 增量和减量运算符 64 2.5.6 计算
--- 命令类别: 系统处理 --- 调用格式: 〈通用型〉 取通用型的值 ([通用型 参数]) - 蒋勇API支持库->系统处理 英文名称:jy_TakeUniversalAddress 取通用型的值。本命令为初级命令。 参数<1>的名称为“参数”,类型为“通用型(all)”,可以被省略。一个通用型参数。 操作系统需求: Windows 调用格式: 〈通用型〉 winAPI ([文本型 库名],文本型 函数名,整数型 定义返回类型,[通用型 参数],... ) - 蒋勇API支持库->系统处理 英文名称:jy_CallAPI 动态调用API 。本命令为初级命令。命令参数表中最后一个参数可以被重复添加。 参数<1>的名称为“库名”,类型为“文本型(text)”,可以被省略。文本型参数。 参数<2>的名称为“函数名”,类型为“文本型(text)”。文本型参数。 参数<3>的名称为“定义返回类型”,类型为“整数型(int)”,初始值为“1”。1#数据类型_整数型, #2数据类型_字节型, #3数据类型_短整数型, #4数据类型_长整数型, #5数据类型_小数型, #6数据类型_双精度小数型, 7#数据类型_逻辑型, 8#数据类型_日期时间型,9 #数据类型_子程序指针,10 #数据类型_文本型。 参数<4>的名称为“参数”,类型为“通用型(all)”,可以被省略。参数。 操作系统需求: Windows 调用格式: 〈整数型〉 取址A (通用型变量 参数) - 蒋勇API支持库->系统处理 英文名称:jy_TakeAddress 这个只支持变量。本命令为初级命令。 参数<1>的名称为“参数”,类型为“通用型(all)”,提供参数数据时只能提供变量,提供参数数据时可以同时提供数组或非数组数据。通用型参数。 操作系统需求: Windows 调用格式: 〈整数型〉 取址B ([通用型 参数]) - 蒋勇API支持库->系统处理 英文名称:jy_TakeAddressA 只能取文本和字节集的地址,对数值型的请用取址A。本命令为初级命令。 参数<1>的名称为“参数”,类型为“通用型(all)”,可以被省略。参数。 操作系统需求: Windows 调用格式: 〈无返回值〉 皮肤_加载 ([字节集 资源皮肤],[逻辑型 是否vista]) - 蒋勇API支持库->系统处理 英文名称:jy_SkinH 加载内存的皮肤。本命令为初级命令。 参数<1>的名称为“资源皮肤”,类型为“字节集(bin)”,可以被省略。加载内存的皮肤。 参数<2>的名称为“是否vista”,类型为“逻辑型(bool)”,可以被省略。启用Vista效果,即标题栏半透明。 操作系统需求: Windows 调用格式: 〈无返回值〉 皮肤_卸载 () - 蒋勇API支持库->系统处理 英文名称:jy_SkinHclose 加载内存的皮肤卸载。本命令为初级命令。 操作系统需求: Windows 调用格式: 〈通用型〉 调用子程序 (通用型 子程序指针或地址,整数型 定义返回类型,[通用型 参数],... ) - 蒋勇API支持库->系统处理 英文名称:jy_call 动态调用子程序,注意调用的参数必须对应个数和类型,不然程序要崩溃!。本命令为初级命令。命令参数表中最后一个参数可以被重复添加。 参数<1>的名称为“子程序指针或地址”,类型为“通用型(all)”。子程序指针或地址。 参数<2>的名称为“定义返回类型”,类型为“整数型(int)”,初始值为“1”。1#数据类型_整数型, #2数据类型_字节型, #3数据类型_短整数型, #4数据类型_长整数型, #5数据类型_小数型, #6数据类型_双精度小数型, 7#数据类型_逻辑型, 8#数据类型_日期时间型,9 #数据类型_子程序指针,10 #数据类型_文本型。 参数<3>的名称为“参数”,类型为“通用型(all)”,可以被省略。参数。 操作系统需求: Windows 调用格式: 〈整数型〉 调试显出 ([通用型数组/非数组 调试显出],... ) - 蒋勇API支持库->系统处理 英文名称:jy_DebugOutPut 本命令仅在易程序的调试版本中被执行,支持字集节等。。本命令为初级命令。命令参数表中最后一个参数可以被重复添加。 参数<1>的名称为“调试显出”,类型为“通用型(all)”,可以被省略,提供参数数据时可以同时提供数组或非数组数据。输出的。 操作系统需求: Windows 调用格式: 〈对象〉 ocx_创建对象 (整数型 窗口句柄,文本型 数字签名,整数型 左边,整数型 顶边,整数型 宽度,整数型 高度,[逻辑型 是否带滚动条],[整数型变量 对象的窗口句柄]) - 蒋勇API支持库->系统处理 英文名称:jy_OCX ocx创建对象。本命令为初级命令。 参数<1>的名称为“窗口句柄”,类型为“整数型(int)”。窗口句柄。 参数<2>的名称为“数字签名”,类型为“文本型(text)”。如这个是个浏览器{F3D0D36F-23F8-4682-A195-74C92B03D4AF}。 参数<3>的名称为“左边”,类型为“整数型(int)”。左边。 参数<4>的名称为“顶边”,类型为“整数型(int)”。顶边。 参数<5>的名称为“宽度”,类型为“整数型(int)”。宽度。 参数<6>的名称为“高度”,类型为“整数型(int)”。窗口高度。 参数<7>的名称为“是否带滚动条”,类型为“逻辑型(bool)”,可以被省略。是否带滚动条。 参数<8>的名称为“对象的窗口句柄”,类型为“整数型(int)”,可以被省略,提供参数数据时只能提供变量。窗口句柄。 操作系统需求: Windows 调用格式: 〈无返回值〉 ocx_挂接事件 (整数型 事件编号,子程序指针 事件指针) - 蒋勇API支持库->系统处理 英文名称:jy_ocxgjsj ocx挂接事件同黑月返回事件句柄。本命令为初级命令。 参数<1>的名称为“事件编号”,类型为“整数型(int)”。事件编号同黑月。 参数<2>的名称为“事件指针”,类型为“子程序指针(SubPtr)”。事件指针。 操作系统需求: Windows 调用格式: 〈整数型〉 取变量数据地址 (通用型 变量) - 蒋勇API支持库->系统处理 英文名称:jy_inttostr 取变量数据地址。本命令为初级命令。 参数<1>的名称为“变量”,类型为“通用型(all)”。 操作系统需求: Windows 调用格式: 〈文本型〉 取特定目录 ([整数型 ID]) - 蒋勇API支持库->系统处理 英文名称:jy_Takespecificdirectory 取特定目录返回目录。本命令为初级命令。 参数<1>的名称为“ID”,类型为“整数型(int)”,可以被省略。0我的桌面 2我的程序 5我的文档 6我的收藏夹 7我的启动 8我最近的文档 9我的发送到 11我的开始菜单 13我的音乐 14我的视频 16我的桌面 20系统字体 22开始菜单组 23程序组 24启动组 25桌面 31收藏夹 32我的浏览器临时目录 33我的Cookies 34我的历史记录 36Windows安装目录 37系统目录 38文件安装目录 39我的图片 40用户目录 41系统目录 46文档 47管理工具 48我的管理工具 53音乐 54图片 55视频。 操作系统需求: Windows 调用格式: 〈文本型〉 访问网页 (文本型 网址,[逻辑型 是否用代理],[整数型 访问方式],[文本型 提交信息],[文本型 提交Cookie],[文本型 返回Cookies],[文本型 附加协议头],[文本型 返回协议头],[逻辑型 是否重定向]) - 蒋勇API支持库->系统处理 英文名称:jy_httpreadingfile 返回网页源码。本命令为初级命令。 参数<1>的名称为“网址”,类型为“文本型(text)”。网址。 参数<2>的名称为“是否用代理”,类型为“逻辑型(bool)”,可以被省略。 参数<3>的名称为“访问方式”,类型为“整数型(int)”,可以被省略。访问方式。 参数<4>的名称为“提交信息”,类型为“文本型(text)”,可以被省略。提交信息。 参数<5>的名称为“提交Cookie”,类型为“文本型(text)”,可以被省略。 参数<6>的名称为“返回Cookies”,类型为“文本型(text)”,可以被省略。 参数<7>的名称为“附加协议头”,类型为“文本型(text)”,可以被省略。 参数<8>的名称为“返回协议头”,类型为“文本型(text)”,可以被省略。 参数<9>的名称为“是否重定向”,类型为“逻辑型(bool)”,可以被省略。 操作系统需求: Windows 调用格式: 〈文本型〉 文本_替换一行 ([文本型 要替换的原文],[整数型 行号],[文本型 替换的内容]) - 蒋勇API支持库->系统处理 英文名称:jy_ReplaceLineContent 返回替换的内容。本命令为初级命令。 参数<1>的名称为“要替换的原文”,类型为“文本型(text)”,可以被省略。要替换的原文。 参数<2>的名称为“行号”,类型为“整数型(int)”,可以被省略。数据类型_整数型。 参数<3>的名称为“替换的内容”,类型为“文本型(text)”,可以被省略。替换的内容。 操作系统需求: Windows 调用格式: 〈无返回值〉 javascript_添加 (文本型 javascript函数) - 蒋勇API支持库->系统处理 英文名称:jy_javascript 添加javascript到易语言var demo=function(txt){if(1){ return ret;}else { return 10}}。本命令为初级命令。 参数<1>的名称为“javascript函数”,类型为“文本型(text)”。var demo=function(txt){if(1){ return ret;}else { return 10}}。 操作系统需求: Windows 调用格式: 〈文本型〉 javascript_调用 (文本型 javascript函数名,通用型 参数,... ) - 蒋勇API支持库->系统处理 英文名称:jy_javarun 调用到易语言。本命令为初级命令。命令参数表中最后一个参数可以被重复添加。 参数<1>的名称为“javascript函数名”,类型为“文本型(text)”。demo。 参数<2>的名称为“参数”,类型为“通用型(all)”,初始值为“0”。参数1。 操作系统需求: Windows 调用格式: 〈无返回值〉 javascript_关闭 () - 蒋勇API支持库->系统处理 英文名称:jy_javaover 调用到易语言。本命令为初级命令。 操作系统需求: Windo

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值