Java是一种面向对象语言 Java程序中一切皆对象,也就是说运行中的Java程序其实是很多对象依照设计要求不断 创建 修改 联系其他对象 修改其他对象 完成使命后被垃圾收集器回收。 那么程序设计就要求定义对象的功能,设置对象之间的联系(接口),设计对象之间相互操作的顺序,根据操作结果的不同再进行更 ...
分类:
其他好文 时间:
2017-04-29 13:44:05
阅读次数:
157
栈、堆、常量池虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同。本文将深入Java核心,详细讲解Java内存分配方面的知识。 Java内存分配与管理是Java的核心技术之一,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知识。一般Java在内存分配时会涉及到以下区 ...
分类:
编程语言 时间:
2017-04-26 11:03:12
阅读次数:
234
要了解Java的中常量池,首先要知道jvm虚拟内存分布: 程序计数器是jvm执行程序的流水线,存放一些跳转指令,这个太高深,小菜不懂。 本地方法栈是jvm调用操作系统方法所使用的栈。 虚拟机栈是jvm执行java代码所使用的栈。 方法区存放了一些常量、静态变量、类信息等,可以理解成class文件在内 ...
分类:
编程语言 时间:
2017-04-23 13:16:45
阅读次数:
246
API:(Appilcation Programming Interface) 就是一些已经写好,可以直接拿来用的功能,在java中以类的形式封装; 包的作用:将所有的类库进行分类,就像一个学校分成不同学院, 常用的包: Java.lang : 基础类,如字符串,多线程,不需要import Java ...
Java内存模型Java虚拟机在规范中视图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的访问差异,以实现让Java程序在各种平台下都能达到一致的内存...
分类:
编程语言 时间:
2017-04-22 09:51:15
阅读次数:
169
当虚拟机遇到一条new指令以后,首先会去检测这个指令的参数能否在常量池中定位到一个类的符号引用,并检测这个类是否被加载、解析、初始化过,没有就先去加载类。 对象创建在堆划分空间可用指针碰撞(使用过的内存放一边未使用的放一边)和空闲列表,划分空间时可能会出现线程不安全的情况#,所以分配内存的时候采用 ...
分类:
编程语言 时间:
2017-04-21 23:59:06
阅读次数:
187
java 的 .class 文件字节码如图:Class 文件是一组以8字节为基础单位的二进制流,各个数据项目有着严格的结构。下面我们介绍下class文件的结构。 魔数 class文件的头4个字节是魔数: ,他的作用便是验证这个文件是否是一个java虚拟机可以使用的文件, 版本号 接下来的是两个字节的 ...
分类:
其他好文 时间:
2017-04-10 20:38:28
阅读次数:
176
Java的内存分布 在JVM中,内存是按照分代进行组织的。 其中,堆内存分为年轻代和年老代,非堆内存主要是Permanent区域,主要用于存储一些类的元数据,常量池等信息。而年轻代又分为两种,一种是Eden区域,另外一种是两个大小对等的Survivor区域。之所以将Java内存按照分代进行组织,主要 ...
分类:
编程语言 时间:
2017-04-09 23:41:01
阅读次数:
288
Java最显著的特点就是"Write Once, Run Anywhere", 这全是因为虚拟机JVM的存在,使得Java代码的运行可以不受操作系统的限制。不论是Java语言的代码还是其他语言的代码,最终都可以编译成字节码.Class文件,虚拟机并不关心文件来自什么语言,只要符合Class文件的格式 ...
分类:
其他好文 时间:
2017-04-08 18:22:41
阅读次数:
266
1、对象的创建 java是面向对象的语言,因此对象的创建无时无刻都存在。在语言层面,使用new关键字即可创建出一个对象。但是在虚拟机中,对象创建的创建过程则是比较复杂的。 首先,虚拟机运到new指令时,会去常量池检查是否存在new指令中包含的参数,比如new People(),则虚拟机首先会去常量池 ...
分类:
其他好文 时间:
2017-04-05 22:31:20
阅读次数:
258