几篇文章理解JVM
文章平均质量分 83
从JVM模型,原理以及参数优化等方面对JVM进行简单的介绍
铁猴
热爱Java,热爱大数据,热爱技术!
展开
-
java Runtime Data Areas summary(1)
在我看来jvm是个神奇的东西,通过它实现了"一处编译,处处运行"的优势,可是以前的学习和工作中往往只是对"可以怎么样"比较关注,却忽略了为什么可以那样,本人一直对jvm充满的好奇,前一阶段也看过一些关于jvm内存分配的文章,可是总是过了一段时间之后就分不清楚东西.最近专门的买了一本"深入理解java虚拟机",虽说这本书看起来也有点翻译技术文档的嫌疑,但是总的还是好的.目前看完了该书的第二章,主要是原创 2012-07-23 22:40:24 · 1763 阅读 · 2 评论 -
自定义类加载器实例(转)
虽然在绝大多数情况下,系统默认提供的类加载器实现已经可以满足需求。但是在某些情况下,您还是需要为应用开发出自己的类加载器。比如您的应用通过网络来传输 Java 类的字节代码,为了保证安全性,这些字节代码经过了加密处理。这个时候您就需要自己的类加载器来从某个网络地址上读取加密后的字节代码,接着进行解密和验证,最后定义出要在 Java 虚拟机中运行的类来。下面将通过两个具体的实例来说明类加载器的开发。转载 2012-10-09 20:59:00 · 1315 阅读 · 0 评论 -
JVM学习之:你了解OutOfMemoryError吗?
工作中或者在自己写的Demo中经常会出现OutOfMemoryError,从字面的意思看就是内存不够用了,可是往往越是经常看到的问题越不会留心的去观察他,就我本人而言OutOfMemoryError就是一个很好的例子,如果我事先知道某段程序会抛出这个错误,我会习惯性的用下面的语句去处理它:try{ do sth will throw OutOfMemoryError}catc原创 2012-08-09 23:14:07 · 3237 阅读 · 0 评论 -
JVM学习之:调优总结 -Xms -Xmx -Xmn -Xss
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms355转载 2012-08-13 22:16:09 · 2657 阅读 · 0 评论 -
JVM学习之:GC的算法简述
由于垃圾收集算法在各个虚拟机以及不同的平台上会有不同的实现,所以开头先大概讲解一下几个基本的算法1. 引用计数(Reference Counting)为每一个对象添加一个计数器,计数器记录了对该对象的活跃引用的数量。如果计数器为0,则说明这个对象没有被任何变量所引用,即应该进行垃圾收集。收集过程如下:1. 减少被收集对象所引用的对象的计数器的值2.将其放入延时收集队列之中原创 2012-08-14 23:39:22 · 12802 阅读 · 5 评论 -
JVM学习之:GC的算法的具体实现(垃圾收集器)
在 JVM学习之:GC的算法简述 这篇博客中提到了各种各样的垃圾算法,由于java屏蔽掉了程序员对内存的管理,其根据这些算法的特点实现了很多的的垃圾收集器,每个垃圾收集器都有自己的优点,使用场合,当然也有各自的缺点,所以在实际的应用中往往会更具应用的特点选择不同的垃圾收集器来组合使用,目前还没有一款"万能通"的收集器能应用在所有的场合,为了能够更好的熟悉这些收集器,对常用的垃圾收集器做一下总结,如原创 2012-08-15 23:28:15 · 5137 阅读 · 2 评论 -
Java 6 JVM参数选项大全(转载)
原文链接 http://kenwublog.com/docs/java6-jvm-options-chinese-edition.htm! 本文是基于最新的SUN官方文档Java SE 6 Hotspot VMOptions 编写的译文。主要介绍JVM中的非稳态选项及其使用说明。为了让读者明白每个选项的含义,作者在原文基础上补充了大量的资料。希望这份文档,对正在研究JVM参数的朋友有帮转载 2012-08-20 22:18:00 · 1842 阅读 · 0 评论 -
JVM学习之:内存的分配以及回收
对于操作系统而言,内存的管理主要包含两个部分,分配和回收,因为JVM分担了程序员的内存管理细节,所以虚拟机也帮助程序员完成了这两件事情。一般情况下提到的内存分配主要是指在堆中的Eden区中的分配,少数情况下可能会直接将对象分配在老年区,但是分配规则主要依赖于具体的环境以及对垃圾回收器的配置,下面将介绍几种常见的内存分配以及回收的策略,并结合具体的测试程序以及输出情况进行讲分配策略原创 2012-08-21 21:53:43 · 2531 阅读 · 0 评论 -
JVM学习之:类加载的过程总结
不知不觉学习java已经快三年了,这三年对就知道怎么去运行一个程序,却不知道一个java程序是怎么运行的,这阶段在看jvm的相关书籍,书中介绍到了类的加载过程,我做了个总结,画了个active图,如有不足,还请高手指教原创 2012-09-03 23:07:57 · 1740 阅读 · 0 评论 -
JVM学习之:Parents Delegation Model(双亲委派模型)
Class Loading作为java程序执行的第一步,虚拟机对这部分并没有严格的说明,因此这个阶段对于程序员而言就有着非常大的灵活性,这点对于java的技术的发展也有非常大的作用,比如说动态代理,OSGI,JSP等。从JVM的角度出发类加载器主要分两类 一:启动类加载器 主要负责把/jre/lib目录下(或者是-Xbootclasspath指定的路径)的能被虚拟机识别原创 2012-09-11 22:28:06 · 3659 阅读 · 0 评论 -
JVM学习之:虚拟机中的运行时栈帧总结(一)
<!--@page {margin:2cm}pre.cjk {font-family:"WenQuanYi Zen Hei Mono",monospace}pre.ctl {font-family:"Lohit Hindi",monospace}p {margin-bottom:0.21cm}--> 每个人都知道,各种各样的动画视频,都原创 2012-09-20 23:07:19 · 4739 阅读 · 1 评论 -
JVM学习之:虚拟机中的运行时栈帧总结(二)
在 JVM学习之:虚拟机中的运行时栈帧总结(一) 虚拟机栈的情况做了一个简单的介绍,也对虚拟机栈中的局部变量表做了简单的介绍,本篇文章主要是简单的总结一下在虚拟机栈帧的其他组成部分.虚拟机栈帧除了局部变量表,还包括操作数栈,动态连接,以及方法的返回地址等结构(一)操作数栈:首先根据名称可以看出操作数栈是一个基本的栈来实现数据结构,那么它自然也遵守栈的后入先出的原则.其次,它里面主要原创 2012-09-24 22:23:29 · 4474 阅读 · 2 评论 -
JVM学习之:浅谈方法调用以及Override/Overload的原理
提到方法调用,我想大多数人的第一反应就是执行一个方法呗,其实在虚拟机的眼里方法调用只是确定他要调用哪个方法而已,和方法的执行还是有比较大的区别的.任何一个层序的运行都离不开方法的调用以及方法的执行,但是在JVM学习之:虚拟机中的运行时栈帧总结(二)提到过,在Class文件的编译过程中不包括传统的连接步骤(连接:把符号引用转化为可以直接找到方法体的直接引用),但是正是因为这点也给java带来了更大的原创 2012-09-25 22:22:52 · 5525 阅读 · 4 评论