栈内存:顺序结构 基本数据类型在栈内存中分配 例如:int x = 100 x不是对象堆内存:离散结构 引用数据类型在堆内存中分配例如: person p1 = new person(); p1就是个对象 对象就是堆内存分配 怎么区分呢 p1. 对象加点就能出现属性 x. 不能出现属性 这样就能区分...
分类:
其他好文 时间:
2015-04-21 01:39:00
阅读次数:
143
JVM内存板块分为5大块:JAVA堆、永久代、栈空间、本地方法栈、Cheap。JAVA堆:又名Heap区,包括Young、old两大板块永久代:、栈空间:运行时线程私有栈空间本地方法栈:C部分的代码区域Cheap:非java区域的内存使用,有些JNI的调用会用到堆内存Yong空间分为3个板块:1个Eden+2..
分类:
编程语言 时间:
2015-04-20 09:42:42
阅读次数:
176
介绍Javascript中面向对象编程思想之前,需要对以下几个概念有了解:1. 浅拷贝和深拷贝:程序在运行过程中使用的变量有在栈上的变量和在堆上的变量,在对象或者变量的赋值操作过程中,大多数情况先是复制栈上的信息,这样就会出现以下情况,如果变量是对象,那么这一操作,复制的只是真正对象所在 的堆内存空...
分类:
编程语言 时间:
2015-04-17 20:16:23
阅读次数:
140
java的内存机制: Java 把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空间,该内存...
分类:
编程语言 时间:
2015-04-16 23:40:55
阅读次数:
177
对象的复制就是复制一个对象作为副本,他会开辟一块新的内存(堆内存)来存储副本对象,就像复制文件一样,即源对象和副本对象是两块不同的内存区域。对象要具备复制功能,必须实现协议或者协议,常用的可复制对象有:NSNumber、NSString、NSMutableString、NSArray、NSMutableArray、NSDictionary、NSMutableDictionary
copy:产...
分类:
其他好文 时间:
2015-04-16 17:42:02
阅读次数:
153
想验证你对 jvm 配的一些调优参数有没有起作用吗?想不想实时监控你自定义的线程池的在实际运行时的线程个数、有没有死锁?想不想实时监控你的 Java 应用的堆内存使用情况,并根据峰值等数据设置最适合你的 Xms、Xmx 等参数?想不想找到你的应用的永久区 PermGen 的使用峰值,并根据其去设置合理的 XX:PermSize、XX:MaxPermSize 等参数?如何根据应用实时的运行运行情况合理配置年轻代(Young Generation,即 Eden 区和两个 Survivor 区之和)和年老代(Ol...
分类:
编程语言 时间:
2015-04-15 21:31:02
阅读次数:
197
原理JVM堆内存分为2块:PermanentSpace 和 Heap Space。Permanent 即持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。Heap = { Old + NEW = {Eden, from, t...
分类:
其他好文 时间:
2015-04-14 14:28:30
阅读次数:
149
堆内存释放,是从堆顶开始。那么如果堆中间的一块区域,大部分内存都释放了,堆顶还有一些会怎么样呢?
我们来看个例子:
#include
#include
#include
#include
int main()
{
char *p[11];
int i;
for(i=0;i
{
p[i]=(char *)malloc(1024*2);
strcpy(p[i],"12...
分类:
其他好文 时间:
2015-04-13 16:40:36
阅读次数:
624
在引进Compacting GC后,ART运行时优化了堆内存分配过程。最显著特点是为每个ART运行时线程增加局部分配缓冲区(Thead Local Allocation Buffer)和在OOM前进行一次同构空间压缩(Homogeneous Space Compact)。前者可提高堆内存分配效率,后者可解决内存碎片问题。本文就对ART运行时引进Compacting GC后的堆内存分配过程进行分析。...
分类:
其他好文 时间:
2015-04-13 01:45:17
阅读次数:
412
Java静态代码块、构造代码块、构造方法的执行顺序静态代码优先于非静态的代码,是因为被static修饰的成员都是类成员,会随着JVM加载类的时候加载而执行,而没有被static修饰的成员也被称为实例成员,需要创建对象才会随之加载到堆内存。所以静态的会优先非静态的。
执行构造器(构造方法)的时候,在执行方法体之前存在隐式三步:
1,super语句,可能出现以下三种情况:
1)构造方法体的第一行是...
分类:
编程语言 时间:
2015-04-13 00:27:02
阅读次数:
142