黑马程序员技术交流社区

标题: 关于Java中对象概念的理解和JVM的内存划分情况 [打印本页]

作者: enjoycode    时间: 2018-6-15 00:08
标题: 关于Java中对象概念的理解和JVM的内存划分情况
本帖最后由 enjoycode 于 2018-6-15 00:10 编辑

每种编程语言都有自己的操作内存中元素的方式,在Java中,一切都被视为对象,因此可以采用单一固定的语法。尽管一切都看作对象,单操作的标识符实际上是对象的一个“引用”。可以用遥控器(引用)来操控电视(对象)的例子来理解。只要握住这个遥控器,就能保持与电视机的连接。当有人想改变频道或者减小音量是,实际操控的是遥控器(引用),再由遥控器来控制电视机(对象)。此外,及时没有电视机,遥控器也可以独立存在。也就是说,你拥有一个引用,并不需要有一个对象与之关联。因此,如果想操控一个词或者句子,则可以创建一个String引用:String  str;
但这里所创建的知识引用,并不是对象。如果此时向s发送一个消息,就会返回一个运行时错误。这是因为此时s实际上没有与任何事物相关联。因此,一种安全的做法是:创建一个引用的同时扁对其进行初始化。String  s = “hello”;  这里用到了Java语言的一个特性:字符串可以用带引号的文本初始化。通常,必须对对象才会用一种更通用的初始化方法:String s = new String(“hello”);  new关键字的意思是创建一个新对象。
为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的数据处理方式和内存管理方式。JVM的内存划分情况如下:
1、寄存器:这是最快的存储区,因为它位于不同于其他存储区的地方—处理器内部,单是寄存器的数量极其有限,所以寄存器是根据需求进行分配,不能直接控制。
2、本地方法栈:JVM在使用操作系统功能时使用,与我们开发无关。
3、方法区:存储可以运行的class文件。
4、堆内存:存储对象或者数组,有new来创建的都存储在堆内存。
5、方法栈:方法运行时使用的内存,比如main方法运行,进入方法栈中执行。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2