方法区:用于存放已被虚拟机加载的类信息、常量、静态变量、编译器编译后的代码等数据。 当方法区无法满足内存分配需求时,会抛出OutOfMemoryError异常。 方法区是线程共享的。堆:在虚拟机启动时创建,用于存放对象实例和数组元素。 如果堆中没有内存完成实例分配,并且堆也无法扩展时,会抛出OutO... ...
分类:
编程语言 时间:
2017-07-15 17:59:52
阅读次数:
205
单例模式如何写? 实现单例一般需要4步 第一:一个静态变量保存当前实例 private static $_instance; 第二:私有的构造函数防止外界实例化对象 private function__construct(){} 第三:私有的克隆函数,防止外界克隆对象 private functio ...
分类:
Web程序 时间:
2017-07-15 12:49:50
阅读次数:
193
先看代码:class Parent { public static String p_StaticField = "父类--静态变量"; public String p_Field = "父类--变量"; // 下面这些是干什么的?解释以下,不是很明白 static { System.out.pri ...
分类:
编程语言 时间:
2017-07-15 12:42:26
阅读次数:
189
1.static关键字 1)static用法总结对于静态方法引用其他的静态方法和变量,在同个类中,直接调用,在不同类中,是用来类名加方法名或者类名加变量名,引用其他的非静态变量和方法,不管是否同一个类,都需要调用对象来使用。对于非静态的方法引用其他的静态和不静态的变量和方法,在同一个类中,直接用,在 ...
分类:
编程语言 时间:
2017-07-15 10:14:31
阅读次数:
205
一 概述 1.垃圾 JVM垃圾收集针对的是主要是堆中的垃圾,因为线程启动时在栈中分配空间,线程结束,自动释放空间,不需要实时监控;方法区主要存储类信息以及静态变量与常量,通常在整个程序运行期间都有效,不存在需要回收的对象。 垃圾指的是无法被线程访问的对象,一个对象只有对线程可见,可被线程访问,才可用 ...
分类:
编程语言 时间:
2017-07-14 13:13:59
阅读次数:
188
一、内存的分配方式 程序占用的内存分为五个区域: 1.静态区/全局区(static)存放静态变量、全局变量,内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间始终不变。2.栈区(stack)存放函数的参数值、局部变量的值等,由编译器自动分配释放。管理简单,空间使用效率高,但是生命周期很短 ...
分类:
其他好文 时间:
2017-07-13 00:55:18
阅读次数:
212
1.什么是线程安全问题? 从某个线程开始访问到访问结束的整个过程,如果有一个访问对象被其他线程修改,那么对于当前线程而言就发生了线程安全问题;如果在整个访问过程中,无一对象被其他线程修改,就是线程安全的。 2.线程安全问题产生的根本原因 综上可知,线程安全问题产生的根本原因是共享数据存在被并发修改的 ...
分类:
编程语言 时间:
2017-07-12 19:00:02
阅读次数:
141
1.类的加载过程 JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示: 1) 装载:查找并加载类的二进制数据; 2)链接: 验证:确保被加载类的正确性; 准备:为类的静态变量分配内存,并将其初始化为默认值; 解析:把类中的 ...
分类:
编程语言 时间:
2017-07-11 00:58:58
阅读次数:
235
1.静态集合类像HashMap、Vector等的使用最容易出现内存泄露,这些静态变量的生命周期和应用程序一致,所有的对象Object也不能被释放,因为他们也将一直被Vector等应用着。 在这个例子中,代码栈中存在Vector 对象的引用 v 和 Object 对象的引用 o 。在 For 循环中, ...
分类:
编程语言 时间:
2017-07-10 10:39:17
阅读次数:
237
程序入口变量变量声明变量初始值变量赋值静态变量变量类型判断(typeof)变量类型转换常量基本数据类型字节类型字符类型整性短整型长整型浮点型数组数组声明与赋值字符串逻辑判断语句循环语句for语句while语句异常处理try语句函数与过程函数定义函数调用函数参数可变参数形式参..
分类:
其他好文 时间:
2017-07-09 21:54:21
阅读次数:
171