JVM学习
文章平均质量分 77
q136179492
这个作者很懒,什么都没留下…
展开
-
java虚拟机类装载:原理、实现与应用
一、引言 一、引言 Java虚拟机(JVM)的类装载就是指--将包含在类文件中的字节码装载到JVM中, 并使其成为JVM一部分的过程。JVM的类动态装载技术能够在运行时刻动态地加载或者替换系统的某些功能模块, 而不影响系统其他功能模块的正常运行。本文将分析JVM中的类装载系统,探讨JVM中类装载的原理、实现以及应用。 二、Java虚拟机的类装载实现与应用 2.1 装载过程简介 ...2011-01-18 16:56:32 · 87 阅读 · 0 评论 -
Java堆.栈和常量池 笔记
今天复习了一下这些知识,顺便做了下笔记. 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。) 3. 堆:存放所有new出来的对象。 4. 静态域:存放静态成员(static定义的) 5. 常量池:存放字符串常量和...原创 2011-01-18 17:50:31 · 67 阅读 · 0 评论 -
编码 GBK 的不可映射字符
这是因为:由于JDK是国际版的,在编译的时候,如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式,则javac.exe首先获得我们操作系统默认采用的编码格式,也即在编译java程序时,若我们不指定源程序文件的编码格式,JDK首先获得操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式,如WIN2k,它的值为GBK),然后JDK就把我们的java源程序从f...原创 2011-01-23 15:32:01 · 101 阅读 · 0 评论 -
深入jvm学习(1)--体系结构
第一章 一:Java的体系结构: 1:java程序设计语言 2:java class 文件格式 3:java 应用编程接口(API) 4:java虚拟机 四者之间的关系如下图: 运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件)。最后字节码被装入内存,一旦字节码进入虚拟机,它就会被解释器解释...原创 2011-01-24 17:19:14 · 96 阅读 · 0 评论 -
深入jvm学习(2)--安全沙箱
第三章 Java 安全沙箱 一:组成java沙箱的基本组件: 1> 类装载器结构 对沙箱起的作用: a>: 防止恶意代码去干涉善意代码 b>: 守护了被信任的类库的边界 c>: 将代码归入了保护域,该保护域确定了代码可以进行哪...原创 2011-01-24 17:20:49 · 96 阅读 · 0 评论 -
jdk动态代理(Proxy,InvocationHandler),含$Proxy0源码
一.相关类及其方法: java.lang.reflect.Proxy, Proxy 提供用于创建动态代理类和实例的静态方法. newProxyInstance() 返回一个指定接口的代理类实例,该接口可以将方法调用指派到指定的调用处理程序 (详见api文档) java.lang.reflect.InvocationHandler, InvocationHandler 是代理实...原创 2011-03-13 19:20:04 · 116 阅读 · 0 评论 -
ClassLoader类加载器
JVM提供了三种加载器 1.跟类加载器(使用C++编写,程序员无法在JAVA代码中获得该类) 2.扩展加载器,使用JAVA代码实现 3.系统加载器(应用加载器),使用JAVA代码实现 用户自定义的类加载器 java.lang.ClassLoader的子类...原创 2011-07-06 21:46:19 · 107 阅读 · 0 评论 -
JVM内存分析及导致内存溢出
一、JVM内存区域组成 java把内存分四种: 1、栈区(stack segment)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等,具体方法执行结束之后,系统自动释放内存资源 2、堆区(heap segment) — 一般由程序员分配释放,存放由new创建的对象和数组,jvm不定时查看这个对象,如果没有引用指向这个对象就回收 3、静态区(data segment)— ...原创 2011-07-09 11:52:45 · 248 阅读 · 0 评论