1、JVM内存模型 a、栈: 包括虚拟机栈和本地方法栈。 虚拟机栈为线程私有,生命周期与线程相同。java方法执行时会创建一个栈帧,里面保存着对象引用、基本类型数据等 本地方法栈和虚拟机栈类似,虚拟机为java方法服务,为本地方法栈为Native方法服务。 b、方法区: 方法区其中一种实现为永久代( ...
分类:
其他好文 时间:
2018-07-14 14:46:04
阅读次数:
161
Java虚拟机的内存可以分为三个区域:栈(stack)、堆(heap)、方法区(method area) 方法区也在堆里面。 栈的特点: 1.栈描述的是方法执行的内存模型。每个方法被焦勇都会创建一个栈帧(存储局部变量、操作数、方法出口等) 2.JVM为每个线程创建一个栈,用于存放该线程执行方法的信息 ...
分类:
其他好文 时间:
2018-07-13 17:45:50
阅读次数:
174
"32. 最长有效括号" 这个题挺有意思,思路有些巧。硬上是不行的。 很明显,遇到括号匹配问题一定要从栈开始思考 说白了,这就是一个匹配消除的游戏,我给大家举个例子演示一波大家就看明白了,也就知道怎么做了 假设输入数列几位S 基本解法是维护一个栈,从S第一个元素开始一次扫描 1. 当碰到(,入栈 2 ...
分类:
其他好文 时间:
2018-07-12 23:59:26
阅读次数:
301
一、虚拟机栈(VM Stack) 1.1)什么是虚拟机栈 虚拟机栈是用于描述java方法执行的内存模型。 每个java方法在执行时,会创建一个“栈帧(stack frame)”,栈帧的结构分为“局部变量表、操作数栈、动态链接、方法出口”几个部分(具体的作用会在字节码执行引擎章节中讲到,这里只需要了解 ...
分类:
其他好文 时间:
2018-07-11 12:25:01
阅读次数:
182
用递归函数和栈的操作实现逆序一个栈 一个栈依次压入1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1,将这个栈转置后,从栈顶到栈底为1、2、3、4、5,也就是实现栈中元素的逆序,但是只能使用递归函数来实现,不能实现其他数据结构。 ...
分类:
其他好文 时间:
2018-07-09 23:17:45
阅读次数:
211
有一个S串和一个T串,长度均小于1,000,000,设当前串为U串,然后从前往后枚举S串一个字符一个字符往U串里添加,若U串后缀为T,则去掉这个后缀继续流程。将s中的每一个字符压入栈暴力将s中的字符和t中的一个一个匹配,若能够匹配若不能匹配,我们利用next数组转移匹配的位置同时我们利用另一个栈来存 ...
分类:
其他好文 时间:
2018-07-06 18:57:52
阅读次数:
115
昨天的 Java 实现单例模式 中,我们的双重检验锁机制因为指令重排序问题而引入了 volatile 关键字,不少朋友问我,到底为啥要加 volatile 这个关键字呀,而它,到底又有什么神奇的作用呢? 对 volatile 这个关键字,在昨天的讲解中我们简单说了一下:被 volatile 修饰的共 ...
分类:
编程语言 时间:
2018-07-04 14:30:02
阅读次数:
160
运行时概念 下面的内容解释了一个理论上的模型。现代 JavaScript 引擎着重实现和优化了描述的几个语义。 可视化描述 栈 函数调用形成了一个栈帧。 当调用bar时,创建了第一个帧 ,帧中包含了bar的参数和局部变量。当bar调用foo时,第二个帧就被创建,并被压到第一个帧之上,帧中包含了foo ...
分类:
编程语言 时间:
2018-07-01 19:01:40
阅读次数:
134
java虚拟机有的区域随着虚拟机进程的启动而存在, 有的区域依赖用户线程的启动和结束而建立和销毁。 程序计数器:为了线程切换后能恢复到正确的执行位置,每个线程都有一个独立的程序计数器。(针对java方法,即栈) 虚拟机栈:为了虚拟机执行java方法,线程创建时就会创建一个栈帧,存储局部变量表、操作数 ...
分类:
编程语言 时间:
2018-07-01 18:20:40
阅读次数:
190
02 JVM 系列(二)内存模型 一、JVM 内存组成 (1) PC 寄存器(线程私有) Java 虚拟机会为每个线程创建 PC 寄存器,在任意时刻,一个 java 线程总是在执行一个方法,这个方法被称为当前方法。 如果当前方法不是本地方法,PC 寄存器就会执行当前正在被执行的指令,如果是本地方法, ...
分类:
其他好文 时间:
2018-07-01 11:53:41
阅读次数:
211