Java的内存分为两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型变量和对象的引用都在函数的栈内存中分配。当在一个代码块中定义一个变量的时候,java就在栈中为其分配内存,当超过作用域的时候内存自动释放。 对内存用来存放new创建的对象和数组。在堆中分配的内存,由java虚拟机的垃圾回...
分类:
编程语言 时间:
2014-08-01 12:50:21
阅读次数:
181
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。 被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根.....
分类:
编程语言 时间:
2014-07-30 23:28:57
阅读次数:
301
Java虚拟机能够管理的线程数量有限,不加控制的创建新线程可能会导致Java虚拟机崩溃。JVM中可以生成的最大数量由JVM的堆内存大小、Thread的Stack内存大小、系统最大可创建的线程数量(Java线程的实现是基于底层系统的线程机制来实现的,Windows下_beginthreadex,Lin...
分类:
编程语言 时间:
2014-07-30 23:27:05
阅读次数:
403
网上一位大神的经验之谈【语言经典书】C:C程序设计语言(K&R)C和指针C专家编程C陷阱与缺陷你必须知道的495个C语言问题C++: C++ primer effective C++深度探索C++对象模型stl源码分析C++必知必会java:java编程思想java并发编程深入理解Java虚拟机:J...
分类:
其他好文 时间:
2014-07-30 20:25:24
阅读次数:
199
CLR(公用语言运行时)和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离。.NET提供了一个运行时环境,叫做公用语言运行时(Commen Language Runtime),是一种多语言执行环境,支持众多的数据类型和语言特性。他管理...
分类:
其他好文 时间:
2014-07-30 20:07:24
阅读次数:
225
很多教科书判断对象是否存活的算法是这样的:给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器都为0的对象就是不可能再被使用。很多应届生和一些有多年工作经验的开发人员,他们对于这个问题给予的都是这个答案..
分类:
其他好文 时间:
2014-07-29 16:00:39
阅读次数:
208
在主流的商用程序语言中(Java和C#)都是使用根搜索算法(GCRootsTracing)判断对象是否存活的。这个算法的基本思路:通过一系列的名为“GCRoots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(ReferenceChain),当一个对象到GCRoots没有任何引用链相..
分类:
其他好文 时间:
2014-07-29 16:00:20
阅读次数:
187
无论通过引用计数算法判断对象的引用数量,还是通过根搜索算法判断对象的引用链是否可达,判定对象是否存活都与“引用”有关。在JDK1.2之前,Java中的引用的定义很传统:如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。这种..
分类:
编程语言 时间:
2014-07-29 15:58:33
阅读次数:
221
很多人认为方法区(或者HotSpot虚拟机中的永久代)是没有垃圾收集的,Java虚拟机规范中确实说过可以不要求虚拟机在方法区实现垃圾手机,而且在方法区进行垃圾收集的“性价比”一般比较低:在堆中,尤其是在新生代中,常规应用进行一次垃圾收集一般可以回收70%~90%的空间,而永久..
分类:
其他好文 时间:
2014-07-29 15:42:19
阅读次数:
246
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。 被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类...
分类:
编程语言 时间:
2014-07-28 23:45:54
阅读次数:
311