Java的垃圾回收之算法
引言
Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,
这些对象通过new、newarray、anewarray和multianewarray等指令建立,但是它们不需要程序代码来显式地释放。一般来说,堆的是由
垃圾回收来负责的,尽管JVM规范并不要求特殊的垃圾回收技术,甚至根本...
分类:
编程语言 时间:
2014-12-29 16:52:24
阅读次数:
189
1. 在如下几种情况下,Java虚拟机将结束生命周期: 1). 执行了System.exit()方法 2). 程序正常执行结束 3). 程序在执行过程中遇到了异常或错误而异常终止 4). 由于操作系统出现错误而导致Java虚拟机进程终止2. 类的加载,连接与初始化: 1). 加载:查找并加...
分类:
编程语言 时间:
2014-12-28 18:08:49
阅读次数:
204
第十三章 线程安全与锁优化线程安全java语言中的线程安全 1 不可变。Immutable 的对象一定是线程安全的 2 绝对线程安全 一个类要达到不管运行时环境如何,调用者都不需要额外的同步措施,通常需要付出很大甚至是不切实际的代价,在java api中标注自己是线程安全的类,大多数都不是绝对的.....
分类:
编程语言 时间:
2014-12-28 16:54:18
阅读次数:
137
第12章 Java内存模型与线程Java内存模型 主内存与工作内存: java内存模型规定了所有的变量都在主内存中,每条线程还有自己的工作内存。 工作内存中保存了该线程使用的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行。 内存间交互操作: 1 lock 作用于主内...
分类:
编程语言 时间:
2014-12-28 16:48:06
阅读次数:
164
常见java问题
什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?
Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。
Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
JDK和JR...
分类:
编程语言 时间:
2014-12-28 15:37:20
阅读次数:
311
第10章 早期(编译期)优化javac编译过程: 1、解析与填充符号表过程 词法、语法分析 将源代码的字条流转变为标记(Token)集合。如“int a = b + 2”这名代码包含了6个标记,分别是int a = b + 2 填充符号表 2、注解处理器 3、语义分析与字节码生成 标注检...
分类:
编程语言 时间:
2014-12-27 16:06:38
阅读次数:
154
Dalvik是Google公司自己设计用于Android平台的Java虚拟机。Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为 .dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik...
分类:
移动开发 时间:
2014-12-27 12:39:14
阅读次数:
228
本文在介绍使用Eclipse远程调试Java应用程序之外,着重解析了远程调试的原理。...
分类:
系统相关 时间:
2014-12-26 21:41:07
阅读次数:
411
在加载类时,Java虚拟机先加载父类再加载子类,再对静态初始化块、
静态成员变量(类变量)、静态方法进行一次初始化。
只有调用new方法时才会创建类的对象。按照父子继承关系进行初始化,
首先执行父类的初始化块部分,然后是父类的构造方法,再执行子类的
初始化块,最后是子类的构造方法。
销毁对象的过程是:首先销毁子类部分,再销毁父类部分。...
分类:
编程语言 时间:
2014-12-26 11:19:25
阅读次数:
200
在一些规模稍大的应用中,Java虚拟机(JVM)的内存设置尤为重要,想在项目中取得好的效率,GC(垃圾回收)的设置是第一步。 PermGen space:全称是Permanent Generation space.就是说是永久保存的区域,用于存放C...
分类:
编程语言 时间:
2014-12-25 18:54:17
阅读次数:
146