JVM的优点(JAVA语言的优点) 除了要了解java语言的优点之外,还要知道java语言的这些优点到底是如何实现的(也即java语言这些特性的实现原理) ...
分类:
编程语言 时间:
2017-05-23 23:47:53
阅读次数:
190
虚拟机把描述类的数据从Class文件加载道内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。在Java里,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会为Java应用程序提供高度 ...
分类:
编程语言 时间:
2017-05-23 08:06:20
阅读次数:
169
Java内存区域 程序计数器 (Program Counter Register) 是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、异常处理、线程恢复等基础功能都需要依 ...
分类:
编程语言 时间:
2017-05-17 10:09:59
阅读次数:
260
JVM对于操作系统来说是一种应用程序,JVM要运行的时候,操作系统会创建对应的进程而且分配一定大小的内存。 一、内存结构 当虚拟机得到系统分配的内存后,它在其内存空间中就是老大,管理对象内存的分配以及对象内存的回收,同时可以根据虚拟机的规范对其内存空间划分不同的区域。主要分为运行数据区、执行引擎、本 ...
分类:
编程语言 时间:
2017-04-29 15:07:13
阅读次数:
173
Grabage Collection GC
GC要完成的三件事情:
哪些内存需要回收?
什么时候回收?
如何回收?
内存运行时区域的各个部分中:
程序计数器、虚拟机栈、本...
分类:
编程语言 时间:
2017-04-13 18:12:41
阅读次数:
195
本博文只是源自周志明《深入理解Java虚拟机》 Java运行数据区图解: 程序计数器图解: Java的虚拟机栈图解: Java的本地方法栈图解: Java堆图解: 直接内存图解: ...
分类:
编程语言 时间:
2017-04-13 12:32:49
阅读次数:
186
我们都知道,java是一种平台无关的语言。java代码通过java编译器(如javac等),将.java文件编译成字节码,也就是.class文件。字节码是运行在jvm虚拟机之上的。而不同的平台则 有不同的虚拟机映射规则。因此,我们从虚拟机上面一层来看,java是平台无关的。write once ,写 ...
分类:
编程语言 时间:
2017-04-04 21:41:56
阅读次数:
227
Java的多态一直是我们理解的一个难点。在读过《深入理解Java虚拟机》和《Java编程思想》以后,感觉理解更深刻了。 我们知道,当父类引用指向子类对象,并且子类覆盖父类中的接口时,当用父类引用调用此接口,则实际上是调用子类对象中的接口。 其实要理解这一点并不难,首先要明确下面两点: 1. 父类引用 ...
分类:
编程语言 时间:
2017-03-05 12:30:07
阅读次数:
161
JVM内存模型以及分区 JVM内存分为: 1.方法区:线程共享的区域,存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据 2.堆:线程共享的区域,存储对象实例,以及给数组分配的内存区域也在这里。 3.虚拟机栈:线程隔离的区域,每个线程都有自己的虚拟机栈,生命周期和线程相同。虚 ...
分类:
编程语言 时间:
2017-03-04 21:08:11
阅读次数:
196
Write Once Run Anywhere,一次编写多处运行 一、Java的运行机制 如下图所示,Java上层应用程序对平台不透明,采用通用的java编译器将java源程序编译成为与平台无关的字节码文件(class文件),而在运行时由java虚拟机(JVM)对字节码文件解释执行,即Java字节码 ...
分类:
编程语言 时间:
2017-03-04 15:32:28
阅读次数:
352