介绍JVM中7个区域,然后把每个区域可能造成内存的溢出的情况说明 程序计数器:看做当前线程所执行的字节码行号指示器。是线程私有的内存,且唯一一块不报OutOfMemoryError异常。 Java虚拟机栈:用于描述java方法的内存模型:每个方法被执行时都会同时创建一个栈帧用于存储局部变量表,操作数 ...
分类:
编程语言 时间:
2017-09-03 13:24:13
阅读次数:
348
题目链接在此 此题一开始写了个深搜,过了30%的数据,也就是n<=10的那一段。。。。 然后看了题解发现这是个二分图的判断。 我们先举例子找到不能放进一个栈里的规律。设有数列【2,3,1,4】 容易模拟得到这个数列单栈是搞不出来的。为什么搞不出来呢? 如果输入的序列是单调递减的,自然一个栈可以搞定。 ...
分类:
编程语言 时间:
2017-09-02 19:55:28
阅读次数:
151
JVM内存分为3个区:堆(heap)、栈(stack)、方法区(method) 1.堆(heap):存储的全部对象,每个对象有个与之对应的class信息。即通过new关键字和构造器创建的对象。JVM只有一个堆被所有线程共享。堆是垃圾收集管理的主要区域。 2.栈(stack):每个线程包含一个栈区,栈 ...
分类:
其他好文 时间:
2017-09-02 19:00:21
阅读次数:
140
1. Activity共有四种启动方式(android:launchMode) (1) standard:默认方式,不用再次配置 standart模式就是一个栈的模式,默认每次跳转到一个新的Activity都会新建一个实例,不管这个实例是否存在。每次跳转就新建,压栈,每次返回就pop弹栈。 (2) ...
分类:
移动开发 时间:
2017-09-02 15:34:26
阅读次数:
298
1、二叉树(binary) 1.二叉树 (binary.cpp/c/pas) 【问题描述】 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分 ...
分类:
其他好文 时间:
2017-09-02 15:28:09
阅读次数:
157
队列是一种典型的先进先出数据结构,队列的实现方式有很多种,比如数组,比如链表等,队列也可以用两个栈来实现,下面就用两个栈实现一个队列。 原理 两个栈中,一个栈用来入队,叫他入队栈,另一个栈用来出队,叫出队栈。 当入队时,我们直接把元素压入入队栈。 当出队时,分两种情况: ①若出队栈不为空,则直接出队 ...
分类:
编程语言 时间:
2017-08-29 14:38:46
阅读次数:
226
每当创建一个线程的时候,系统会为线程的堆栈保留一个栈区的空间区域,并将一些物理存储器提交给这个已保留的区域,我查看了VS2015,该默认设置大小是1MB。 它可以自己设置,在 项目-->属性-->链接器-->系统 >堆栈保留大小 这个地方填写自己希望的栈大小。 // 堆保留大小 1M 堆提交大小 4 ...
分类:
编程语言 时间:
2017-08-25 17:02:03
阅读次数:
200
一、运行时数据区1.计数器当前线程所执行的字节码的行号指示器2.虚拟机栈线程私有 每个方法在执行时会创建一个栈帧,3.本地方法栈4.java堆所有线程共享的一块内存区域,所有对象实例和数组都在堆上分配内存。-Xmx -Xms5.方法区线程共享,存储被虚拟机加载的类信息、常量、静态变量、即时编译器编译 ...
分类:
编程语言 时间:
2017-08-23 15:03:15
阅读次数:
149
1. ABI规定桢栈结构 (1)栈帧的内存布局(以Linux为例) (2)栈帧的形成方式 (3)栈帧的销毁方式 2. ebp寄存器 (1)ebp为当前栈帧的基准(存储上一个栈帧的ebp值) (2)通过ebp能够获取返回值地址、参数和局部变量等。 3. 函数调用发生时的细节 (1)调用者通过call指 ...
分类:
其他好文 时间:
2017-08-23 12:00:41
阅读次数:
198
一般栈溢出在无限递归下出现,下面的程序在创建对象时出现栈溢出: 不应该是outofmemory吗?栈里只有a这个reference,其引用的对象,以及对象里的a引用的对象都在堆里分配内存? 猜想(毫不负责): 应该是执行new A()时,调用构造函数,而构造函数初始化a需要调用构造函数,函数调用函数 ...
分类:
其他好文 时间:
2017-08-20 15:53:32
阅读次数:
146