上一篇看了堆内存是怎么创建对象的,那么创建完肯定要使用对象啦~ 那是怎么访问对象呢? java 程序是通过栈上的reference数据来操作堆上的具体对象的。 首先我们回顾一下虚拟机栈: 虚拟机栈是 java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局 ...
分类:
其他好文 时间:
2017-04-17 12:40:13
阅读次数:
141
概述 前一章介绍了Java内存运行时区域的各个部分,其中程序计数器、虚拟机栈和本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊的执行着出栈和入栈操作。每一帧分配多少内存基本在类结构确定下来时就已知了,因此这几个区域的内存分配和回收具有确定性,线程结束时,内存就跟着回 ...
分类:
其他好文 时间:
2017-04-17 11:42:23
阅读次数:
185
在堆中存放着几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事就是要确定这些对象之中哪些还活着,哪些对象已经死去. 判断对象是否已经死亡有以下几种算法: 定义 : 给对象中添加一个引用计数器,当有一个地方引用时,计数器加1,引用失效时,就减1,当对象的引用计数器为0时,对象就是不可再被使用的. ...
分类:
编程语言 时间:
2017-04-11 11:52:52
阅读次数:
205
1、程序计数器(Program Counter Register) 是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。 2、Java虚拟机栈(Stack)线程私有,每一个方法调用时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。局... ...
分类:
编程语言 时间:
2017-04-05 20:24:35
阅读次数:
209
ESP:该指针永远指向系统栈最上面一个栈帧的栈顶 EBP:该指针永远指向系统栈最上面一个栈帧的底部01 修改函数返回地址#include#include#define PASSWORD "1234567"int verify_password (char *password){ int authen... ...
分类:
系统相关 时间:
2017-04-03 20:40:33
阅读次数:
316
JAVA虚拟机栈几个重要概念 java 虚拟机栈 = java virtual machine stacks = jvms 1、JVMS 线程私有,生命周期与线程相同 2、JVMS 描述的是JAVA方法执行的内存模型:JVMS在方法执行时会创建一个“栈帧” stack frame,用于记录局部变量表 ...
分类:
编程语言 时间:
2017-03-30 23:28:07
阅读次数:
284
怎样将字符串的算数表达式计算出来? 如果使用正则表达式来匹配,有点不怎么好想,而且一般想法设计到递归,而在Python中是非常不建议使用递归的, 因为它不仅有递归深度的限制(一般是1000个栈帧),而且不支持尾递归优化。 最简单的办法就是先将表达式转化为前缀表达式,然后通过前缀表达式来计算出结果。 ...
分类:
其他好文 时间:
2017-03-24 22:54:01
阅读次数:
188
垃圾回收主要内容: 1. 那些内存需要回收? 2. 什么时候回收? 3. 如何回收? 垃圾回收主要针对运行时数据区那些区域? 运行时数据区的线程私有区域有:虚拟机栈,本地方法栈,程序计数器等; 栈中的栈帧随着方法的进入和退出执行入栈和出栈,每个栈帧的内存分配在编译期就已经确定; 随着线程或方法的结束 ...
分类:
编程语言 时间:
2017-03-20 00:06:27
阅读次数:
207
一:Java技术体系模块图 二:JVM内存区域模型 1.方法区 也称"永久代” 、“非堆”, 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小。 ...
分类:
编程语言 时间:
2017-02-28 15:35:31
阅读次数:
203
http://www.cnblogs.com/fxplove/articles/2574451.html 数调用另一个词语表示叫作 过程。一个过程调用包括将数据和控制从代码的一部分传递到另一部分。另外,它还必须在进入时为过程的局部变量分配空间,并在推出时释放这些空间。而数据传递,局部变量的分配和释放 ...
分类:
其他好文 时间:
2017-02-27 21:11:50
阅读次数:
451