一、java虚拟机内存原型寄存器:我们在程序中无法控制。栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中堆:存放用new产生的数据静态域:存放在对象中用static定义的静态成员常量池:存放常量非RAM存储:硬盘等永久存储空间。二、常量池(constant
pool) 常....
分类:
编程语言 时间:
2014-05-01 06:54:37
阅读次数:
390
从Grails
2.2以后默认run-app命令将启动Grails应用程序在一个单独的Java虚拟机。 这就是所谓的分叉的Tomcat Grails中的执行。
这样的类路径Grails构建系统和应用程序也不会干预,两个进程都有自己的内存设置。 我们可以看到在grails-app / conf / B...
分类:
其他好文 时间:
2014-05-01 01:22:02
阅读次数:
566
前言
class文件时java虚拟机执行引擎的数据入口,也是java技术体系的基础支柱之一,了解class文件的结构对后面进一步了解虚拟机执行引擎有很重要的意义。
概要:
class文件是一组以八位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在class文件中,中间没有添加任何分隔符,这使得整个class文件中存储的内容几乎全部都是程序运行的必要数...
分类:
其他好文 时间:
2014-04-29 13:46:21
阅读次数:
371
定期为大家更新《深入理解Java虚拟机》这本书的读书笔记,都是干货喔!...
分类:
编程语言 时间:
2014-04-29 13:21:22
阅读次数:
351
在Java多线程程序中,由于线程调度,指令间的次序在每次运行时都可能不相同,有时候,我们需要得到指令次序,用来分析程序的行为。这样细粒度的底层行为用一般方法很难完成,我们需要借助 JVM Tool Interface,即JVMTI,来帮助我们获取Java虚拟机执行时的信息。本文先介绍编写JVMTI程序的基本框架,然后介绍如何使用JVMTI来获取多线程程序中指令之间的次序。...
分类:
编程语言 时间:
2014-04-29 13:11:22
阅读次数:
892
1、用户自定义的类加载器:要创建用户自己的类加载器,只需要扩展java.lang.ClassLoader类,然后覆盖它的findClass(String
name)方法即可,该方法根据参数指定类的名字,返回对应的Class对象的引用。findClassprotected Class findClas...
分类:
编程语言 时间:
2014-04-29 09:22:45
阅读次数:
546
jvm全称是Java Virtual
Machine(java虚拟机)。它之所以被称之为是“虚拟”的,就是因为它仅仅是由一个规范来定义的抽象计算机。我们平时经常使用的Sun
HotSpot虚拟机只是其中一个具体的实现(另外还有BEA JRockit、IBM J9等等虚拟机)。在实际的计算机上通过软件...
分类:
其他好文 时间:
2014-04-29 09:15:47
阅读次数:
281
Java的优势1. 简单
不像C或者C++语言,Java中省去了对指针的操作。但是,Java中并没有省去指针,代替指针的是一种新的变量——引用,引用也是保存一个对象的内存地址。2.方便
Java虚拟机自带垃圾回收器,能够自动回收内存资源。而C和C++语言,需要开发人员手动进行内存资源回收。3.安.....
分类:
编程语言 时间:
2014-04-28 00:01:34
阅读次数:
574
1.jvm 内存结构
1)程序计数器
较小的内存区域,可以看作是当前线程所执行的字节码的行号指示器;每条线程独立;
2)java虚拟机栈
描述java方法执行的内存模型,即每个方法在执行的同时都会创建一个栈帧用户存储局部变量表、操作数栈、动态链接、方法出口等信息;即一个方法的调用直至完成的过程对应着一个栈帧的入栈到出栈的过程。同样是线程私有;
3)本地方法栈
对应虚拟机使用的nativ...
分类:
编程语言 时间:
2014-04-27 22:12:22
阅读次数:
440
在Zygote的诞生一文中init进程是如何一步步创建Zygote进程的,也了解了Zygote的进程的作用。Zygote进程的诞生对于整个Java世界可以说有着”开天辟地“的作用,它创建了Java虚拟机,并且繁殖了Java世界的核心服务system_server进程,在完成Java世界的初创工作以后,Zygote并没有死去,它只是暂时的沉睡(socket事件堵塞)在那里,一旦有需要(有客户端请求的...
分类:
其他好文 时间:
2014-04-27 19:13:55
阅读次数:
819