当Java编译器编译好.class文件之后,我们需要使用JVM来运行这个class文件。那么最开始的工作就是要把字节码从磁盘输入到内存中,这个过程我们叫做【加载】。加载完成之后,我们就可以进行一系列的运行前准备工作了,比如: 为类静态变量开辟空间,将常量池存放在方法区内存中并实现常量池地址解析,初始...
分类:
其他好文 时间:
2015-07-17 18:19:00
阅读次数:
103
了解类加载全过程,有助于了解JVM运行过程,以及更深入了解java动态性(解热部署,动态加载),提高程序灵活性。类加载全过程:JVM将class文件字节码文件加载到内存中,并对数据进行校验解析和初始化,最终形成可以直接使用的java类型的过程。
加载将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区中的运行时数据结构,在堆中生成一个代表这个类的java.lang.Class对象,...
分类:
其他好文 时间:
2015-07-16 20:11:28
阅读次数:
286
概述
运行时数据区域
程序计数器
Java虚拟机栈
本地方法栈
Java堆
方法区
运行时常量池
直接内存
hotspot虚拟机对象探秘
对象的创建
对象的内存布局
对象的访问定位概述
Java程序员不需要自己去手动释放内存,而C、C++程序员就需要自己去操作了,原因是Java虚拟机帮我们完成了这个动作,所以我们也要了解jvm的机制,这样出问题后才会知道它到底是什么情况。本章介绍JVM内存各个区...
分类:
编程语言 时间:
2015-07-14 17:59:21
阅读次数:
163
1.static 关键字 修饰的成员被所有对象共享(包括成员变量和方法)。 修饰的成员优先于对象存在。 存储于方法区(共享数据区)的静态区中。 静态方法只能访问静态成员。 静态方法中不可以使用this或super关键字。 主函数是static,只能调用static方法。 静态代码块随着类的加载而运行...
分类:
数据库 时间:
2015-07-13 23:45:33
阅读次数:
188
JVM内存区域模型
1.方法区
也称"永久代” 、“非堆”, 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小。
运行时常量池:是方法区的一部分,Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常...
分类:
编程语言 时间:
2015-07-12 23:21:22
阅读次数:
268
工厂方法和抽象工厂都属于工厂模式,那么它们到底有什么区别呢?让我们来比较一下,首先我们从工厂接口的角度来分析一下。
工厂方法:
工厂方法是创建一个系列的产品的同分类产品不同功能的创建接口,并且同分类不同功能的产品返回的产出物还得是相同的。例如:汽车的发动机的制造就可以使用工厂方法,...
分类:
其他好文 时间:
2015-07-12 14:17:17
阅读次数:
119
4. 副作用
在一些语言如Pascal中,子程序被分成两种:函数和过程。虽然Java没有强制性地要求将方法区分为命令和函数,然而这种区别对于良好地设计程序有很大的帮助[1]。
首先说明一个概念:副作用(side effect)。副作用一般是针对操作(表达式)而言的,一个操作/表达式有“副作用”是指在对该表达式求值时,会改变程序的一个或多个数据,以致再次对该表达式求值时,可能会得出不同的结果...
分类:
编程语言 时间:
2015-07-11 18:33:17
阅读次数:
236
php从mysql中访问数据库并取得数据,取得结果的过程中用到好几个类似的方法,区别及用法值得区分一下,看下面的代码代码如下:'; } $result = mysql_query($sql); while($row = mysql_fetch_array($result)) { echo $row[...
分类:
数据库 时间:
2015-07-11 12:08:39
阅读次数:
138
页面加载完成的方法有两个函数: 1.jq的ready()方法; 2.js的window.onload = function(){}方法;区别: ready()方法指的是html的dom加载完成(图片,文字等不一定加载完成); window.onload = function(){}方法指的是...
分类:
其他好文 时间:
2015-07-10 10:52:26
阅读次数:
119
(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类...
分类:
编程语言 时间:
2015-07-09 09:35:23
阅读次数:
126