![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
ragingsweet
这个作者很懒,什么都没留下…
展开
-
Java内存区域与内存溢出异常
运行时数据区域: 包括 方法区,虚拟机栈,本地方法栈,堆 和程序计数器。 程序计数器: 是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器。 每一个线程都有自己私有的程序计数器。 如果线程正在执行的是一个JAVA方法,该计数器记录的是正在执行的虚拟机字节码指令的地址,如果正在执行的是native方法,则计数器值为空(undefined)。此内存区域是唯一一个...原创 2011-09-08 22:04:14 · 57 阅读 · 0 评论 -
Correct use of ConcurrentHashMap
ConcurrentHashMap has been pitched as a simple alternative for HashMap, eliminating the need for a synchronized blocks. I had some simple event counting code that created count records on the fly. Alt...原创 2012-02-12 22:13:13 · 114 阅读 · 0 评论 -
EffectiveJava 读书笔记1 创建和销毁对象
第1条:考虑用静态工厂方法代替构造器 静态工厂方法有名称,可以更好的描述返回的对象特性。比如同一个类的两个构造方法,方法参数类型相同,但顺序不同,用户根本无法从字面上区分两个构造器的区别 静态工厂方法可以控制对象的创建(是否单例,是否缓存,是否禁止创建) 可以返回原类型的任何子类型对象在面向接口的编程中,因为接口不能有静态方法,按惯例,接口Type的静态工厂方法被放在一个名为Type...原创 2011-11-20 11:50:36 · 103 阅读 · 0 评论 -
运行期优化
JAVA最初是通过解释器进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁,就会把这些代码认定为“热点代码”而将它们编译成本地机器码 HOTSPOT和J9都是解释器和编译器并存,保留解释器的原因是,加快启动时间,立即执行,当运行环境中内存资源限制较大时,解释器可以节约内存,解释器还可以作为激进优化的编译器的“逃生门”(称为逆优化Deoptimization) HOTSPOT...原创 2011-11-10 12:12:05 · 80 阅读 · 0 评论 -
编译期优化
三类编译器: 前端编译器,将JAVA编译成CLASS文件,JAVAC,ECJ JIT编译器,把字节码转换成机器码的过程,HOTSPOT VM的C1,C2编译器 AOT编译器,静态提前编译器,直接将JAVA编译成本地机器码的过程 Annotation,可以看作是一组编译器的插件,这些插件可以读取,修改,添加抽象语法树的任意元素,如果这些插件对语法树进行了修改,那么编译器将回到...原创 2011-11-09 16:16:25 · 58 阅读 · 0 评论 -
虚拟机字节码执行引擎
执行引擎在执行JAVA代码的时候可以选择解释执行(通过解释器执行)和编译执行(通过即使编译器产生本地代码执行)两种选择。 栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表,操作数栈,动态连接和方法返回地址等信息。每一个方法调用的过程,就对应着一...原创 2011-11-06 11:23:28 · 91 阅读 · 0 评论 -
虚拟机类加载机制
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的JAVA类型,这就是虚拟机的类加载机制。 类加载的生命周期包括:加载Loading, 验证Verification, 准备Preparation, 解析Resolution, 初始化Initialization, 使用Using和卸载Unloading. 除解析阶段外,...原创 2011-10-31 16:46:51 · 134 阅读 · 0 评论 -
类文件结构
Class文件是一组以8位字节为基础单位的二进制流,各数据项严格按顺序排列其中,中间没有添加任何分隔符. 根据JAVA虚拟机规范的规定,CLASS文件格式采用一种类似C语言结构体的伪结构来存储,这种伪结构中只有两种数据类型:无符号数和表。 无符号数属于基本的数据类型,以u1,u2,u4,u8来分别表示一个字节,两个字节,四个字节和8个字节的无符号数,无符号数用来描述数字,索引引用,...原创 2011-10-10 17:39:48 · 73 阅读 · 0 评论 -
垃圾收集器与内存分配策略
常见垃圾收集算法: 引用计数算法。有一个引用,加1,减少一个引用减1,当计数器为0时标记为可回收。JAVA不使用这种技术,微软的COM,ActionScript3的Flashplayer, python以及游戏脚本领域广泛使用的Squirrel都是用这种方式。无法解决循环引用问题。 根搜索算法。JAVA和C#都是用这种算法。基本思路是,通过一系列名为GC Roots的对象作为起始点,从...原创 2011-09-20 17:33:28 · 62 阅读 · 0 评论 -
The Java Thread Pool
A thread pool helps to constrain the number of threads that may be running in an application at any one time. As threads require system resources, having too many threads executing simultaneously w...原创 2012-03-03 00:55:50 · 154 阅读 · 0 评论