JVM
文章平均质量分 88
sean-zou
这个作者很懒,什么都没留下…
展开
-
java.lang.OutOfMemoryError: Java heap space
JVM: Java HotSpot(TM) Client VM (1.5.0_15-b04, mixed mode, sharing)operating-system:GNU/Linux(uname -o)问题描述:一个java小程序,运行一段时间总是会莫名其妙的down掉,有时运行1天后down掉,有时运行5分钟后down掉,并且程序日志没有任何异常问题分析:查看...原创 2013-04-25 16:48:16 · 1189 阅读 · 0 评论 -
Java jvisualvm简要说明
jvisualvm能干什么:监控内存泄露,跟踪垃圾回收,执行时内存、cpu分析,线程分析... jvisualvm已经被集成在jdk1.6以上的版本中(不是jre)。自身运行需要最低jdk1.6版本,但是可以监控运行在jdk1.4以上版本的java程序以jdk1.6update45(jdk1.6update45自带的jvisualvm)来做说明,当然也可单独下载独立的jvisualvm...原创 2012-12-27 08:53:37 · 48700 阅读 · 7 评论 -
JVM笔记1:Java内存模型及内存溢出
灰色:所有线程间共享白色:线程间隔离 程序计数器:当前线程所执行的字节码的行号指示器,字节码解释器通过改变该计数器的值来选取下一条需要执行的字节码指令。1,一块很小的内存空间2,每条线程都需要一个独立的计数器(java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式实现的,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的计数器)3,该内存区域不存在原创 2013-04-26 11:34:39 · 2548 阅读 · 0 评论 -
JVM笔记7:类加载器与上级委托机制
Java中的类加载器主要有2类,一类是系统提供的,包括:启动类加载器、扩展类加载器和应用程序类加载器;另一类是由Java应用开发人员编写的自定义类加载器。启动类加载器属于JVM内部使用的类加载器,既没有上级类加载器,也没有下级类加载器,应用程序类加载器的上级是扩展类加载器,自定义类加载器的上级是应用程序类加载器。如果一个类加载器收到了加载类的请求,它首先不会自己去尝试加载这个类,而是把这个请求委托给上级类加载器去完成,只有当上级类加载器反馈自己无法完成这个加载请求时,下级类加载器才会去尝试自己加载这个类,这原创 2013-12-15 18:33:03 · 3081 阅读 · 2 评论 -
JVM笔记3:Java垃圾收集算法与垃圾收集器
当前商业虚拟机的垃圾收集都采用“分代收集”算法,即根据对象生命周期的不同,将内存划分几块,一般为新生代和老年代,不同的代根据其特点使用最合适的垃圾收集算法一,标记-清除算法该算法分为“标记”、“清除”2个过程,首先标记需要清除的对象,然后统一清除这个算法有2个明显的缺点:1,标记和清除的效率都不高2,垃圾收集后,内存碎片化严重改算法通常用于老年代二,标记-整理...原创 2013-10-22 09:37:17 · 3677 阅读 · 0 评论 -
JVM笔记4:Java内存分配策略及配置参数
简单来说,对象内存分配主要是在堆中分配。但是分配的规则并不是固定的,取决于使用的收集器组合以及JVM内存相关参数的设定以下介绍几条基本规则(使用的ParNew+Serial Old收集器组合):一,对象优先在新生代Eden区分配//-XX:+UseParNewGC -Xms20m -Xmx20m -Xmn10m -XX:+PrintHeapAtGC -XX:+PrintGCDetai...原创 2013-10-29 10:00:33 · 7728 阅读 · 0 评论 -
JVM笔记5:Class文件结构
Class文件是一组以8位字节为基础单位的二进制流,包含多个数据项目(数据项目的顺序,占用的字节数均由规范定义),各个数据项目严格按照顺序紧凑的排列在Class文件中,不包含任何分隔符,使得整个Class文件中存储的内容几乎全部都是程序运行的必要数据,没有空隙。当遇到需要占用超过8位字节以上空间的数据项目时,会按照高位在前的方式分割为多个8位字节进行存储数据项目具有2种数据类型:1,无符号原创 2013-12-01 16:51:47 · 12979 阅读 · 6 评论 -
JVM笔记6:JVM类加载机制
实在是很难弄懂啊原创 2013-12-06 13:59:15 · 19850 阅读 · 2 评论 -
JVM笔记2:对象访问
java中对不同位置创建的对象的访问方式是不同的1,方法中创建的对象public class Test { public void instanceObj(){ Object obj = new Object(); } ...}1,Object obj这一部分的数据将会反映到java栈的本地变量表中,作为一个reference类型的数据存在2,new O原创 2013-04-30 20:39:33 · 1116 阅读 · 0 评论