前言
在上一篇随笔中,我们谈到最小化一个计算中的操作数量不一定会提高它的性能。现在,就让我们来解开为什么会出现这种情况的原因吧。
处理器体系结构
在计算机的处理器中,处理一条指令包括很多操作,可以分为取指(fetch)、译码(decode)、执行(execute)、访存(memory)、写回(write back)和更新程序计数器(PC update)等几个阶段。这些阶段可以在流...
分类:
其他好文 时间:
2015-08-03 14:47:37
阅读次数:
191
本文主要介绍Java虚拟机的内存分布以及对象的创建过程。一、Java虚拟机的内存分布文章开始前读者需要了解Java虚拟机的运行时数据区是怎样划分的。如下图所示:1、程序计数器(Program Counter Register) 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行....
分类:
编程语言 时间:
2015-08-01 18:47:35
阅读次数:
180
一、概述
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干不同的数据区域,这些区域都有各自的用途以及创建和销毁的时间。Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如下图所示:
下面就每一个区域进行阐述。
二、运行时数据区域
程序计数器
程序计数器,可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器...
分类:
编程语言 时间:
2015-07-30 00:48:35
阅读次数:
172
内存模型
java虚拟机在执行java程序的过程中把他所管理的内存划分为若干个不同的数据区域。包括:程序计数器、java虚拟机栈、本地发放栈、java堆、方法区。
内存模型如图:
程序计数器
一块较小的内存空间,它是当前线程所执行的字节码的行号指示器,字节码解释器工作时通过改变该计数器的值来选择下一条需要执行的字节码指令,分支、跳转、循环等基础功能都要依...
分类:
编程语言 时间:
2015-07-28 18:36:27
阅读次数:
157
一、概述
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干不同的数据区域,这些区域都有各自的用途以及创建和销毁的时间。Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如下图所示:
下面就每一个区域进行阐述。
回到顶部
二、运行时数据区域
程序计数器
程序计数器,可以看做是当前线程所执行的字节码的行号指示器。在虚拟...
分类:
编程语言 时间:
2015-07-28 10:55:05
阅读次数:
130
一、概述 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干不同的数据区域,这些区域都有各自的用途以及创建和销毁的时间。Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如下图所示: 下面就每一个区域进行阐述。二、运行时数据区域程序计数器 程序计数器,可以看做是当...
分类:
编程语言 时间:
2015-07-27 18:23:08
阅读次数:
111
CPU是寄存器的集合体。高级语言经过编译转化为机器语言之后,通过寄存器进行运算(累加寄存器)和存储处理。根据功能将寄存器分为8类:1.累加寄存器(accumulator register) 2.程序计数器(program counter) 3.基址寄存器(base reg...
分类:
其他好文 时间:
2015-07-27 18:15:20
阅读次数:
122
范围:要回收哪些区域
在JVM五种内存模型中,有三个是不需要进行垃圾回收的:程序计数器、JVM栈、本地方法栈。因为它们的生命周期是和线程同步的,随着线程的销毁,它们占用的内存会自动释放,所以只有方法区和堆需要进行GC。
前提:如何判断对象已死
所有的垃圾收集算法都面临同一个问题,那就是找出应用程序不可到达的内存块,将其释放,这里面得不可到达主要是指应用程序已经没有内存块的引用了, 在...
分类:
其他好文 时间:
2015-07-22 09:26:16
阅读次数:
183
Java内存区域
1.程序计数器(Program Counter Register)
在虚拟机中一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。 在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指...
分类:
其他好文 时间:
2015-07-16 14:07:33
阅读次数:
189
概述
运行时数据区域
程序计数器
Java虚拟机栈
本地方法栈
Java堆
方法区
运行时常量池
直接内存
hotspot虚拟机对象探秘
对象的创建
对象的内存布局
对象的访问定位概述
Java程序员不需要自己去手动释放内存,而C、C++程序员就需要自己去操作了,原因是Java虚拟机帮我们完成了这个动作,所以我们也要了解jvm的机制,这样出问题后才会知道它到底是什么情况。本章介绍JVM内存各个区...
分类:
编程语言 时间:
2015-07-14 17:59:21
阅读次数:
163