#Auther:AaronFan"""递归特性:1.必须有一个明确的结束条件2.每次进入更深一层递归时,问题规模相比上次递归都应有所减少3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函..
分类:
编程语言 时间:
2016-12-11 03:25:28
阅读次数:
142
类的加载: 指的是将class文件的二进制数据读入到运行时数据区(JVM在内存中划分的) 中,并在方法区内创建一个class对象。 类加载器: 负责加载编译后的class文件(字节码文件)到JVM(Java虚拟机)当中。 而类加载器主要分为以下几种: 1.Bootstrap class loader ...
分类:
编程语言 时间:
2016-12-07 22:55:44
阅读次数:
251
我们常常做的是将Java内存区域简单的划分为两种:堆内存和栈内存。这种划分比较粗粒度,这种划分是着眼于我们最关注的、与对象内存分配密切相关的两类内存域。其中栈内存指的是虚拟机栈,堆内存指的是java堆。 1.栈内存,即虚拟机栈。每个方法被执行的时候都会同时创建一个栈帧,用来存储局部变量,操作栈,动态 ...
分类:
编程语言 时间:
2016-12-02 01:32:37
阅读次数:
180
一、函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法。在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫 ...
分类:
编程语言 时间:
2016-11-27 06:57:25
阅读次数:
231
1.内存分区。 内存区域分为五块:方法区,虚拟机栈,堆,本地方法栈,程序计数器。 方法区:线程共享的内存区域。存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译的代码数据等。而并非存储的方法代码。 虚拟机栈:JAVA中描述JAVA方法执行的内存模型。每个方法创建的时候都会创建一个栈帧,栈帧用 ...
分类:
编程语言 时间:
2016-11-19 15:17:44
阅读次数:
218
每个人都知道,各种各样的动画视频,都是由一帧一帧图片连续切换结果的结果而产生的,其实虚拟机的运行和动画也类似,每个在虚拟机中运行的程序也是由许多的帧的切换产生的结果,只是这些帧里面存放的是方法的局部变量,操作数栈,动态链接,方法返回地址和一些额外的附加信息组成,在虚拟机中包含这些信息的帧称为“栈帧” ...
分类:
其他好文 时间:
2016-11-18 07:27:59
阅读次数:
176
1.概述 Java内存运行时区域的各个部分里: 其中程序计数器、虚拟机栈、本地方法栈3各区域随线程而生,随线程而灭。栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每个栈帧中分配多少内存基本上是在类结构定下来是就已知了,因此这几个区域的内存分配和回收都具备确定性,不需过多考虑。 而堆 ...
分类:
编程语言 时间:
2016-11-16 01:59:27
阅读次数:
281
方法方法的结构方法体内部代码的执行本地变量类型推断和var关键字嵌套块中的本地变量本地常量控制流方法调用返回值返回语句和void方法参数形参实参值参数引用参数引用类型作为值参数和引用参数输出参数参数数组方法调用用数组作为实参参数类型总结方法重载命名参数可选参数栈帧递归 方法 方法的结构 方法是一块具... ...
栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。每一个方法从调用开始至执行完成的过程,都对应着一个栈帧在虚拟机 ...
分类:
其他好文 时间:
2016-11-13 07:50:18
阅读次数:
377
第二章 一、Java运行时的数据区域: (1)程序计数器:程序计数器用于存储正在执行的虚拟机字节码指令的地址,每个线程有自己独立的程序计数器 (2)虚拟机栈: 1)虚拟机栈是线程私有的,虚拟机栈是java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧用于存储局部变量、操作数帧、动态链接、方 ...
分类:
其他好文 时间:
2016-11-12 23:01:02
阅读次数:
246