一、运行时数据区: Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同数据区域。 1.有一些是随虚拟机的启动而创建,随虚拟机的退出而销毁,所有的线程共享这些数据区。 2.第二种则是与线程一一对应,随线程的开始和结束而创建和销毁,线程之间相互隔离。 java虚拟机所管理的内存将 ...
分类:
其他好文 时间:
2017-03-05 19:22:11
阅读次数:
131
Java的多态一直是我们理解的一个难点。在读过《深入理解Java虚拟机》和《Java编程思想》以后,感觉理解更深刻了。 我们知道,当父类引用指向子类对象,并且子类覆盖父类中的接口时,当用父类引用调用此接口,则实际上是调用子类对象中的接口。 其实要理解这一点并不难,首先要明确下面两点: 1. 父类引用 ...
分类:
编程语言 时间:
2017-03-05 12:30:07
阅读次数:
161
1、什么是JVM ?
JVM, 中文名是Java虚拟机, 正如它的名字, 是一个虚拟机器,来模拟通用的物理机。 JVM是一个标准,一套规范, 规定了.class文件在其内部运行的相关标准和规范。 ...
分类:
其他好文 时间:
2017-03-05 11:37:35
阅读次数:
238
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
栈 a.存储值 存储对象的地址 b.由系统自动分配 c.响应:如果栈的剩余空间大于所申请的空间,系统将为程序员提供内存,否则会报内存溢出。 堆 a.存储对象内容 在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。 b.需要自动申请并确定大小 c. 首先应该知道操作系统有一个记录空闲内存地址的 ...
分类:
其他好文 时间:
2017-03-04 15:15:22
阅读次数:
141
1.java虚拟机的生命周期 当启动一个java程序时,一个虚拟机实例也就生成了,当该程序关闭退出,这个虚拟机实例也就随之消亡。 java虚拟机内部有两种线程 ,守护线程和非守护线程,守护线程是执行垃圾收集的线程,而java程序中的初始线程-就是开始于main()方法的那个,是非守护线程。当该程序中 ...
分类:
编程语言 时间:
2017-03-04 11:27:01
阅读次数:
241
概述 一个对象本身的内在结构需要一种描述方式,这个描述信息是以字节码的方法存储在方法区中的。Class本身就是一个对象,都以KB为单位,如果new Integer()为了表示一个数据就占用KB级别的内存就有点不值了,下面讲解JVM是如何做的。为了表示对象的属性、方法等信息,不得不需要结构描述。Hot ...
分类:
其他好文 时间:
2017-03-02 17:23:08
阅读次数:
253
(1)官方文档说的是必须是JDK6,JDK7,我试了一下JDK8也是可以的 (2)我是在Windows系统下用的是Eclipse Java的开发环境这里不再多说。将下载的JDK里面的java.dll和LeapJava.dll文件拷贝到jre安装目录下的bin目录下(java虚拟机和Leapmotio ...
分类:
编程语言 时间:
2017-03-01 11:56:16
阅读次数:
280
Java内存模型与线程 概述 多任务处理在现代计算机操作系统中几乎已是一项必备的功能,多任务运行是压榨手段,就如windows一样,我们使劲的压榨它运行多个任务,俱要high又要耍。并发则是另外一种更具体的应用场景。每秒事物处理数(Transactions per Second,tps)是最重要的指 ...
分类:
编程语言 时间:
2017-02-28 20:48:44
阅读次数:
306