本文主要介绍了Java虚拟机、字节码和class文件结构、JVM执行流程和类加载、JVM内存结构、JVM执行引擎与动态编译。通过对本文的学习,可以对JVM的运行机制有所了解。
分类:
其他好文 时间:
2015-12-27 01:08:57
阅读次数:
491
很多人认为方法区(或者HotSpot虚拟机中的永久代)是没有垃圾收集的,Java虚拟机规范中确实说过可以不要求虚拟机在方法区实现垃圾收集,而且在方法区进行垃圾收集的“性价比”一般比较低:在堆中,尤其是在新生代中,常规应用进行一次垃圾收集一般可以回收70%~95%的空间,而永久代的垃圾收集效率远低于此...
分类:
其他好文 时间:
2015-12-25 22:14:39
阅读次数:
151
Java程序经常也会遇到进程挂掉的情况,一些状态没有正确的保存下来,这时候就需要在JVM关掉的时候执行一些清理现场的代码。JAVA中的ShutdownHook提供了比较好的方案。
JDK提供了Java.Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的钩子,这个钩子可以在一下几种场景中被调用:
程序正常退出使用System.exit(...
分类:
编程语言 时间:
2015-12-24 17:57:03
阅读次数:
220
1.类加载器 Java虚拟机中可以安装多个类加载器,系统默认主要三个类加载器,每个类负责加载特定位置的类:BootStrap(内嵌在java虚拟机中由C++编写),ExtClassLoader,AppClassLoader。当然也可以自定义类加载器,自定义的加载器必须继承ClassLoader。.....
分类:
编程语言 时间:
2015-12-24 16:26:07
阅读次数:
252
转:http://mobile.51cto.com/abased-406286.htm1.资源对象没关闭造成的内存泄漏描述:资源性对象比如(Cursor,File文件等)往往都用了一些缓冲,我们在不使用的时候,应该及时关闭它们,以便它们的缓冲及时回收内存。它们的缓冲不仅存在于 java虚拟机内,还存...
分类:
移动开发 时间:
2015-12-24 14:57:24
阅读次数:
201
写此类文章的初始动机:被同事问道 jvm 是做什么时,竟然茫然以对;按照惯例,从 what/where/how 等开篇,即:一. JVM 的目的是什么?二. JVM 是什么时候被以何总形式被安装在电脑上的?三. JVM 的原理是什么?一. JVM 的目的 通俗的将就是为了使 java 编写的程序能....
分类:
编程语言 时间:
2015-12-24 02:05:37
阅读次数:
188
一、虚拟机内存分区 java虚拟机运行在受不同操作系统操纵的物理机上,不同的操作系统使用不同的底层方法来执行不同的操作,这些方法称之为本地方法:Native Method,本地方法一般执行的都是比较底层的操作,比如说IO、线程管理等,java方法则会执行的一般是相对高级的操作,比如说数逻运算,或者是...
分类:
编程语言 时间:
2015-12-22 22:52:43
阅读次数:
275
在JVM中,内存分为两个部分,Stack(栈)和Heap(堆),这里,我们从JVM的内存管理原理的角度来认识Stack和Heap,并通过这些原理认清Java中静态方法和静态属性的问题。 一般,JVM的内存分为两部分:Stack和Heap。 Stack(栈)是JVM的内存指令区。Stack管理很简.....
分类:
编程语言 时间:
2015-12-22 20:59:52
阅读次数:
222
Java关键字this、super使用总结一、this Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这...
分类:
编程语言 时间:
2015-12-18 14:30:13
阅读次数:
172
Java的这两个特性,关键在于Java编译器的输出并不是可执行的代码,而是字节码 bytecode. 字节码是一套设计用来在Java运行时系统下执行的高度优化的指令集,该Java运行时系统称为Java虚拟机 JVM. 在其标准形式下,JVM就是一个字节码解释器。 出于对性能的考虑,许多现代语言都被设...
分类:
编程语言 时间:
2015-12-16 01:36:37
阅读次数:
229