JVM

java内存区域 程序计数器:记录字节码行号指令,唯一一个没有OutOfMemoryError的区域。 虚拟机栈:每个方法的执行过程都伴随着从进栈到出栈,存储局部变量,方法出口等信息。 本地方法栈:与2相同,只是为Native方法服务。 堆:内存最大,存放实例对象。 方法区:存放常量,静态变量,虚拟机加载类信息等数据。 运行时常量池(方法区的一部分):类版本,字段,方法,与静态常量池等数据在类加载后进…

JVM

1.JVM内存模型 一. 线程私有区域 1.Program Counter Register(程序计数器): 一块较小的内存空间, 作用是当前线程所执行字节码的行号指示器(类似于传统CPU模型中的PC), PC在每次指令执行后自增, 维护下一个将要执行指令的地址. 在JVM模型中, 字节码解释器就是通过改变PC值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖PC完成 2.虚拟机栈: 虚拟机栈也就…

jvm

关于jvm的一些小问题 java和其他语言有什么区别? 答:java是一个纯软件平台,可以跨平台使用。jvm把java文件编译成.class文件可以跨平台使用,每当一个java程序都会生成jvm实例,只有当程序运行结束后,这个jvm才会退出。jvm通过调用main方法来启动java程序,这个main方法必须是public,stacic ,void并且该方法必须接受一串字符串数组参数只有同时满足才能够运行。 public static void main(String[]…

jvm

Java 发表评论
网上看到了很多大神写的jvm的文章,有很深的感触,所以这里总结一下,写的不好的请大家指出。 jdk/bin目录下有个工具 jvisualvm.exe,我们使用它会更直观的了解jvm。废话不多说,打开它。 点击工具插件安装插件 Visual GC,打开它你会看到下面的界面,它就是jvm的内部结构。 如上图所示,jvm可以分为以下几个部分 Eden:年轻代,用来存放JVM刚分配的Java对象 Survivor0(S0),Survivor1(S1):两个Survi…

jvm

JVM运行时数据区的内存模型由五部分组成: 【1】方法区 【2】堆 【3】JAVA栈 【4】PC寄存器 【5】本地方法栈   常量池是属于类型信息的一部分,类型信息也就是每一个被转载的类型,这个类型反映到JVM内存模型中是对应存在于JVM内存模型的方法区中,也就是这个类型信息中的常量池概念是存在于在方法区中,而方法区是在JVM内存模型中的堆中由JVM来分配的。     javac 把源码整成字节码 java 时,首先把…

JVM

JVM 内存可简单分为三个区:1、堆区(heap):用于存放所有对象,是线程共享的(注:数组也属于对象)2、栈区(stack):用于存放基本数据类型的数据和对象的引用,是线程私有的(分为:虚拟机栈和本地方法栈)3、方法区(method):用于存放类信息、常量、静态变量、编译后的字节码等,是线程共享的(也被称为非堆,即 None-Heap)Java 的垃圾回收器(GC)主要针对堆区对于方法调用,会创建栈帧在栈…

jvm

Java 发表评论
一、 常用参数的设置 -xms -xmx 设置堆的大小。 -xmn设置年轻代,默认是堆大小的3/8. 一个gui程序最好在10-20s内进行gc,在半秒内完成。   二、常用的监控命令 jstat -<option> <pid> time:间隔多长时间打印gc信息 查看jvm运行状态,垃圾收集,内存,类装载,等等 jps [option] [hostid] ex: jps -v 输出启动时的jvm参数 jps和ps命令类似 jmap 三、垃圾收集器 Serial(新生代) 单线程、新…

jvm

Java 发表评论
JVM体系结构 内存模型 JVM垃圾收集算法: JVM内存管理:深入Java内存区域与OOM JVM 堆内存设置原理 JVM内存区域模型: 1.程序计数器 每个Java线程都有一个程序计数器来用于保存程序执行到当前方法的哪一个指令(只有此不会产生OutOfMemoryError) 2.Java虚拟机栈 Java虚拟机栈生命周期也是与线程相同,在VM Spec中对这个区域规定了2中异常状况:如果线程请求的栈深度大于虚拟机所允许的深度,将抛出Sta…

JVM

JVM 发表评论
JVM 理解jvm中的栈 堆 堆分配 堆GC标记 堆二次标记 堆设置 堆日志分析 标记暂停阶段 年轻代收集 年老代收集 G1收集器 可视化分析 小结 JVM 理解jvm中的栈 一句话就是java运行在虚拟机之上,虚拟机帮java屏蔽底层的指令集,让java能够跨平台运行。 本章重点从虚拟机内存模型(运行时数据区域)入手。先看图: 这是一张比较官方的虚拟机模型图,我们今天讲的就是虚线框的那部分的栈。 栈是我们最常用的…

jvm

Java , 发表评论
一,jvm核心编程中的内存分析       二,对其功能大概分析     三,一个对象的调用过程     四,一个数组的调用过程 五,方法区内存   问题: 参照本人以前对jvm内存的了解http://wuquanyin1011.iteye.com/admin/blogs/574971 看了这些之后,仍旧对内存有很多不懂的地方,我的理解,当一个主线程启动,创建了一个属于自己的栈内存,之后继续运行有创建局部变量(局部变量的值存放在操作数栈当中)与创建对象(…

JVM

  JVM(Java虚拟机)一种用于计算设备的规范,可用不同的方式(软件或硬件)加以实现。编译虚拟机的指令集与编译微处理器的指令集非常类似。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。       Java虚拟机(JVM)是可运行Java代码的假想计算机。只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行。       J…

jvm

JVM 发表评论
[url]http://yufenfei.iteye.com/blog/1746914[/url]GC有两种类型:Scavenge GC 和Full GC1、Scavenge GC 一般情况下,当新对象生成,并且在Eden申请空间失败时,就会触发Scavenge GC,堆的Eden区域进行GC,清除非存活对象,并且把尚且存活的对象移动到Survivor的两个区中。2、Full GC 对整个堆进行整理,包括Young、Tenured和Perm。Full GC 比Scavenge GC要慢,因此应该尽可能减少Full GC,有如下原…

Jvm

描述一下JVM加载class文件的原理机制? Java语言是一种具有动态性的解释型语言,类(class)只有被加载到JVM后才能运行。当运行指定程序时,JVM会将编译生成的.class文件按照需求和一定的规则加载到内存中,并组织成为一个完整的Java应用程序。这个加载过程是由类加载器完成,具体来说,就是由ClassLoader和它的子类来实现的。类加载器本身也是一个类,其实质是把类文件从硬盘读取到内存中。类的加载…

JVM

JVM 中科永联高级技术培训中心(www.itisedu.com)       JVM(Java虚拟机)一种用于计算设备的规范,可用不同的方式(软件或硬件)加以实现。编译虚拟机的指令集与编译微处理器的指令集非常类似。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。         Java虚拟机(JVM)是可运行Java代码的假想计算机。只要根据JVM规格描述将解释器移植到特定的计算机上,就…

JVM

Java, JVM 发表评论
1、内存区域模型   JVM内存分为:虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 程序计数器(线程私有):   是当前线程所执行的字节码的行号指示器,每条线程都要有一个独立的程序计数器,这类内存也称为“线程私有”的内存。   正在执行java方法的话,计数器记录的是虚拟机字节码指令的地址(当前指令的地址)。如果还是Native方法,则为空。   这个内存区域是唯一一个在虚拟机中…