Java运行时内存区域 Java虚拟机在运行Java程序的时候会将它所管理的内存区域划分为多个不同的区域。每个区域都有自己的用途,创建以及销毁的时间。有的随着虚拟机的启动而存在,有的则是依赖用户线程来启动和销毁。 程序计数器 程序计数器是一块很小的区域,可以看做是用来表示线程所执行到字节码的某一行的 ...
分类:
编程语言 时间:
2016-05-15 16:42:57
阅读次数:
219
1、Java内存模型 Java虚拟机在执行程序时把它管理的内存分为若干数据区域,这些数据区域分布情况如下图所示: 程序计数器:一块较小内存区域,指向当前所执行的字节码。如果线程正在执行一个Java方法,这个计数器记录正在执行的虚拟机字节码指令的地址,如果执行的是Native方法,这个计算器值为空。 ...
分类:
编程语言 时间:
2016-05-14 23:03:32
阅读次数:
227
当一个程序进入内存运行时,即变成一个进程,进程特征:独立性;动态性;并发性。线程也被称为轻量级进程,线程是进程的执行单元,线程在程序中是独立的、并发的执行流,线程可以拥有自己的堆栈、程序计数器和自己的局部变量,但不拥有系统资源,它与父进程的其他线程共享该进程所拥有的全部资源。线程的执行是抢占式的,线程比进程拥有更高的性能。
1)区别并发性和并行性:
并发性:同一时刻只有一条指令执行,多...
分类:
编程语言 时间:
2016-05-13 02:52:43
阅读次数:
216
JVM内存由几个部分组成:堆、方法区、栈、程序计数器、本地方法栈
JVM垃圾回收仅针对公共内存区域,即:堆和方法区进行,因为只有这两个区域在运行时才能知道需要创建些对象,其内存分配和回收都是动态的。
一、垃圾回收策略
1.1分代管理
将堆和方法区按照对象不同年龄进行分代:
(Young Generation and Old Gene...
分类:
编程语言 时间:
2016-05-12 21:51:40
阅读次数:
256
进程进程模型计算机上的所有可运行的软件,通常包括操作系统,被组织成若干顺序进程(squential process),简称进程(process).一个进程就是一个正在运行的实例,包括程序计数器、寄存器和变量的当前值。从概念上说,每个程序拥有它自己的CPU.然而实际上是CPU在多个进程间切换.
在UNIX系统中,可以使用fork()系统调用创建系统调用.
进程的两个基本属性:
进程是一个拥有资源...
分类:
编程语言 时间:
2016-05-12 19:35:02
阅读次数:
477
Java 的工作方式
编写Java源代码。 → “.java文件”
编译器对源代码文件进行编译工作,编译过程中,如果源代码编写存在隐患,则会得到编译时异常。
如果编译工作通过,则得到一份计算机可执行的字节码文件。→ “.class文件”
JVM(JAVA虚拟机)对字节码文件进行读取与执行,也就是让我们的代码跑起来。
Java 的内存区域划分
程序计数器
1、首先这...
分类:
编程语言 时间:
2016-05-11 22:06:02
阅读次数:
309
最近看了周志明版本的《深入理解Java虚拟机》第一版和第二版,写的很好,收获很多,此处总结一下。 jvm中内存划分: 如上图,一共分为五块,其中: 线程共享区域为: 1、java堆 2、方法区 线程私有区域为: 3、JVM栈 4、本地方法栈 5、程序计数器 各区域作用: 1、java堆: java堆 ...
分类:
其他好文 时间:
2016-05-11 14:47:56
阅读次数:
116
今天我们将一起学习Java虚拟机使用垃圾收集算法和常见的垃圾收集器。Java虚拟机内存区域的程序计数器、虚拟机栈和本地方法栈3个区域是随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出出栈和入栈。每一个栈帧中分配多少内存基本上是在类结构确定下来的时候就已知的,因此这个几个区域的内存分配和回收都具备确定性,在这几个区域就不需要过多考虑回收问题,因为方法结束或者线程结束时,内存自然就跟着回收了。而...
分类:
编程语言 时间:
2016-05-07 10:21:51
阅读次数:
328
首先讲一下进程和线程的区别:
进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。
线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。
线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。
多进程是指操作系统能同时运行多个任务(程序)。
多...
分类:
编程语言 时间:
2016-05-07 09:31:27
阅读次数:
186
JVM具有自动内存管理机制,Java不需要像c/c++一样,为每一个new操作写配对的delete/free代码,不容易出现内存泄露和溢出。JVM内存区域主要包括如下部分:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。程序计数器程序计数器可以视为当前线程所执行的字节码行号指示器,如果当前执行的是Native方法,计数器的值为空(Undefined)。在JVM的概念模型中,字节码解释器...
分类:
编程语言 时间:
2016-05-06 15:18:53
阅读次数:
187