jvm虚拟内存分布: 程序计数器是jvm执行程序的流水线,存放一些跳转指令。 本地方法栈是jvm调用操作系统方法所使用的栈。 虚拟机栈是jvm执行java代码所使用的栈。 方法区存放了一些常量、静态变量、类信息等,可以理解成class文件在内存中的存放位置。 虚拟机堆是jvm执行java代码所使用的 ...
分类:
编程语言 时间:
2018-12-17 11:36:04
阅读次数:
192
类被创建之后的成员的初始化顺序到底是怎么样的? 首先 不考虑继承 运行程序后输出结果为: 1 静态变量被赋初始值 a 02 进入静态块 a 03 成员变量被赋值 str 我被赋值了4 进到普通代码块5 进入构造器 为了验证静态成员的顺序由代码的前后顺序决定 加入第二个静态块 输出结果为: 1 进入第 ...
分类:
编程语言 时间:
2018-12-16 23:41:37
阅读次数:
353
一、模块单例 Python 的模块就是天然的单例模式,因为模块在第一次导入时,会生成 .pyc 文件,当第二次导入时,就会直接加载 .pyc 文件,而不会再次执行模块代码。 直接在其他文件中导入此文件中的对象,这个对象即是单例模式的对象 二、静态变量方法 先执行了类的__new__方法(我们没写时, ...
分类:
其他好文 时间:
2018-12-16 23:38:13
阅读次数:
165
从整体上可将变量划分为局部变量、成员变量(也称为实例变量)和静态变量。 表2-2局部变量、成员变量、静态变量的区别 类型 声明位置 从属于 生命周期 局部变量 方法或语句块内部 方法/语句块 从声明位置开始,直到方法或语句块执行完毕,局部变量消失 成员变量 (实例变量) 类内部,方法外部 对象 对象 ...
分类:
其他好文 时间:
2018-12-16 23:28:53
阅读次数:
148
类加载过程: 1、类加载就是执行Java程序编译之后在字节码文件中生成的clinit()方法(称之为类构造器),clinit()方法由静态变量和静态代码块组成。 2、子类的加载首先需要先加载父类,如果父类为接口。则不会调用父类的clinit方法。一个类中可以没有clinit方法。 3、clinit方 ...
分类:
其他好文 时间:
2018-12-15 13:57:28
阅读次数:
133
/// /// 单例模式的实现 /// public class Singleton { // 定义一个静态变量来保存类的实例 private static Singleton uniqueInstance; // 定义一个标识确保线程同步 private static readonly obj..... ...
引入 当设备被一个程序打开时,存在被另一个程序打开的可能,如果两个或多个程序同时对设备文件进行写操作,这就是说我们的设备资源同时被多个进程使用,对共享资源(硬件资源、和软件上的全局变量、静态变量等)的访问则很容易导致竞态。 显然这不是我们想要的,所以本节引入互斥的概念:实现同一时刻,只能一个应用程序 ...
分类:
其他好文 时间:
2018-12-13 14:56:32
阅读次数:
175
C/C++中static关键字详解 静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏,对变量来讲,static变量存放在静态存储区,所以它具备持久性和默认值0。 1 ...
分类:
其他好文 时间:
2018-12-11 21:55:39
阅读次数:
298
栈、堆、常量池等虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同。本文将深入Java核心,简单讲解Java内存分配方面的知识。 首先我们先来讲解一下内存中的各个区域。 stack(栈) 存放基本类型的数据和对象的引用,即存放变量。 如果存放的是基本类型数据(非静态变量),则直接将变量 ...
分类:
编程语言 时间:
2018-12-11 11:33:26
阅读次数:
212
类加载 类加载时机 必须立即进行类初始化的时机有且仅有五个: 1、new、getstatic、putstatic、invokestat四个字节码命令时,其实就是new一个对象,读取或者设置类静态变量,调用类的静态方法时 2、使用java.lang.reflect包的方法对类进行反射调用时 3、初始化 ...
分类:
其他好文 时间:
2018-12-10 21:56:12
阅读次数:
170