1.Java程序执行流程 Java程序的执行依赖于编译环境和运行环境.源码代码转变成可执行的机器代码,由下面的流程完成: Java技术的核心就是Java虚拟机,因为所有的Java程序都在虚拟机上运行.Java程序的运行需要Java虚拟机.Java API和Java Class文件的配合.Java虚拟机实例负责运行一个Java程序.当启动一个Java程序时,一个虚拟机实例就诞生了.当程序结束,这个虚拟机实例也就消亡. 2.Java虚拟机 Java虚拟机的主要任务是装载class文件并且执行其中的字…
认识Java虚拟机的内部体系结构 Java虚拟机的内部体系结构也许很少有人去关心,因为对于Java程序员来说,一般只需要跟API打交道就可以了.这些体系结构只是Java虚拟机内部的结构而已.但是如果理解了其内部结构,对于我们开发项目,以及排除系统中的相关故障是由帮助的. 先看看总体结构图,如下: 各部分的主要功能分别是:1. 类装载子系统:负责Java类型的装载连接以及初始化.Java虚拟机有两种类装载器,启动类装载器和用户自定义类装载器.启动类装载器是JAVA虚拟机实现的一部分,自定义装载器是…
目录 1.Java虚拟机内存模型 1.1 程序计数器 1.2 Java虚拟机栈 局部变量 1.3 本地方法栈 1.4 Java堆 1.5 方法区(永久区.元空间) 附图 2.JVM内存分配参数 2.1 设置最大堆内存 2.2 设置最小堆内存 2.3 设置新生代 2.4 设置持久代 2.5 设置线程栈 2.6 堆的内存分配 2.7 堆分配参数总结 3.垃圾收集基础 3.1 垃圾收集的作用 3.2 垃圾回收算法与思想 3.2.1 引用计数法(Reference Counting) 3.2.2 标记-…
一.Java平台的结构图 二.JVM与JRE.JDK关系? JVM:Java Virtual Machine(Java虚拟机),负责执行符合规范的Class文件 JRE:Java Runtime Environment(java运行环境),包含JVM和类库         JDK:Java  Development Kit(java开发工具包),包含JRE和开发工具包,例如javac.javah 相关文章:http://blog.csdn.net/ljheee/article/details/5…
前言 前面我们已经知道了Java虚拟机所做的事情就是回收那些不用的垃圾,那些不用的对象.那么问题来了,我们如何知道一个对象我们不需要使用了呢?程序在使用的过程中会不断的创建对象,这些所创建的对象指不定在哪里我们就需要用到了呢?GC怎么知道我们不用了呢?回收就是简单的删除吗?这些问题将会在这里做出解释. 怎么判断一个对象将会被回收 说白了就是判断一个对象已经死亡,不会再被用到了. 首先我们需要知道java中有四种不一样的引用. 强引用:A a = new A() 软引用:还有用,但不是必须的对象,…
JVM体系结构: 下面重点介绍运行时数据区域模块: (1)java堆(Heap) 被所有线程共享的一块内存区域,在虚拟机启动时创建 用来存储对象实例 可以通过-Xmx和-Xms控制堆的大小 OutOfMemoryError异常:当在堆中没有内存完成实例分配,且堆也无法再扩展时. java堆是垃圾收集器管理的主要区域.java堆还可以细分为:新生代(New/Young).旧生代/年老代(Old/Tenured).持久代(Permanent)在方法区,不属于Heap. 新生代:新建的对象都由新生代分…
GC回收算法 1.标记清除算法分为标记阶段和清除阶段标记阶段:通过特定的判断方式找出无用的对象实例并将其标记清除阶段:将已标记的对象所占用的内存回收缺点:运行多次以后容易产生空间碎片,当需要一整段连续内存时虽然空间足够但是无法分配,会多次触发GC操作. 2.复制算法为了提高标记清除算法的效率,减少内存碎片的产生而出现的,该算法将内存空间分为两个完全相同的两部分,每次只使用其中的一部分.分为标记阶段.复制阶段和清除阶段标记阶段:同标记清除算法的标记阶段一致复制阶段:将为标记的对象全部复制到另一块未…
打印日志 通过加入 -XX:+PrintGCDetails 参数则可以打印详细GC信息至控制台.参数-verbose:gc也是可以,但不够详细.通过加入-XX:+PrintGCDateStamps则可以记录GC发生的详细时间.通过加入 -Xloggc:/home/XX/gc/app_gc.log.可以把GC输出至文件,这对长时间服务器GC监控很有帮助.通过加入-XX:+DisableExplicitGC可以将System.gc()转为空操作. 日志分析 ParNew 通过加入-XX:+UsePa…
一.体系结构组成 当编写并运行一个Java程序时,就同时体验了这四种技术.用Java语言编写源代码,编译成Java Class文件,然后再在Java虚拟机上运行class文件.当编写程序时,通过调用类中的方法来访问系统资源.当程序运行的时候,它通过调用class文件中的方法来满足程序的Java API调用. Java程序设计语言 Java Class文件格式 Java应用编程接口 Java虚拟机 二.Java虚拟机 Java虚拟机的主要任务是装载class文件并执行其中的字节码.JVM包含一个类…
转自:http://www.cnblogs.com/evan2012/archive/2012/05/09/2489417.html 1.jvm的内部体系结构浅析 2.jvm的几个运行时数据区域 3.jvm的内存溢出异常 jvm全称是Java Virtual Machine(java虚拟机).它之所以被称之为是"虚拟"的,就是因为它仅仅是由一个规范来定义的抽象计算机.我们平时经常使用的Sun HotSpot虚拟机只是其中一个具体的实现(另外还有BEA JRockit.IBM J9等等虚…