JVM-栈 2012-09-17 15:43:53 分类: Java 原文转自:http://www.blogjava.net/nkjava/archive/2012/03/15/371971.html JVM栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;JVM堆解决的是数据存储的问题,即数据怎么放.放在哪儿,另外JVM堆中存的是对象.JVM栈中存的是基本数据类型和JVM堆中对象的引用. JVM基础概念:JVM堆与JVM栈 数据类型 Java虚拟机中,数据类型可以分为两类:基本类型…
转自:http://developer.51cto.com/art/201009/227812.htm JVM栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;JVM堆解决的是数据存储的问题,即数据怎么放.放在哪儿,另外JVM堆中存的是对象.JVM栈中存的是基本数据类型和JVM堆中对象的引用. JVM基础概念:JVM堆与JVM栈 数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型.基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值.“引用值…
class文件格式 参考上一篇文章<[JVM故事]一个Java字节码文件的诞生记>,后续还会专门讲解class文件的内部结构. 数据类型 jvm包括两种数据类型,基本类型和引用类型. 基本类型包括,数值类型,boolean类型,和returnAddress类型. 数值类型包括,整型,浮点型,和char类型. boolean类型同样只有true和false. returnAddress类型是一个指针,指向jvm指令的操作码,在Java中没有与之对应的类型. boolean类型的操作会被转化为in…
一.堆 1.介绍 Java运行程序对应一个进程,一个进程就对应一个JVM实例.一个JVM实例就有一个运行时数据区(Runtime),Runtime里面,就只有一个堆,一个方法区.这里也阐述了,方法区和堆是一个进程一份.而一个进程当中,可以有多个线程,那就意味着一个进程中的多个线程会共享堆空间和方法区. 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域.堆在JVM启动的时候被创建,其空间大小也就确定了,是JVM管理的最大一块内存空间,堆内存大小是可以调节的. Java虚拟机规范规定…
学习Java GC机制,可以帮助我们在日常工作中 排查各种内存溢出或泄露问题,解决性能瓶颈,达到更高的并发量,写出更高效的程序. 我们将从4个方面学习Java GC机制, 1,内存是如何分配的: 2,哪些内存需要回收: 3,在什么情况下执行GC以及执行GC的方式: 4,如何监控和优化GC机制. 先来看看[1,内存是如何分配的:],JVM内存区域的划分(运行时数据区). JVM的体系结构如下:JVM的类加载系统.执行引擎系统.垃圾回收器都是去访问  运行时数据区(即 JVM虚拟内存). Java内…
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用. 堆内存用于存放由new创建的对象和数组.在堆中分配的内存,由java虚拟机自动垃圾回收器来管理.在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中…
上一次写了1.初步认识JVM -- JVM序列,今天接着记录写JVM的运行机制. 一.JVM启动流程 Java平台包括JVM以及Java语言,其中JVM也是运行在操作系统中的一个应用程序进程,那么也应该有自己的生命周期以及内存空间.一般情况下java或javac命令执行过程大概如下: 输入java(javac)命令 装载环境以及配置(根据当前路径和系统版本寻找jvm.cfg) 根据配置寻找定位并加载JVM.DLL 初始化JVM获得JNIEnv接口 找到main方法 注意在装载环境以及配置中首先查…
1.jvm内存结构 静态编译:把java源文件编译成字节码文件class,这个时候class文件以静态方式存在. 类加载器:把java字节码文件加载到内存中 方法区:将字节码放到方法区作为元数据(简单名字+描述符). 堆:对象(类的实例) 方法区和堆:运行时数据区在所有线程间共享 虚拟机栈.本地方法栈.程序计数器:运行时数据区线程私有 2.堆 (1)对于大多数应用来说,java堆是java虚拟机所管理的内存中的最大的一块 (2)java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建 (3)…
一.概述 1.介绍 类比一下:红框就好比内存的运行时数据区,在各自不同的位置放了不同的东西.而厨师就好比执行引擎. 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行.JVM内存布局规定了Java在运行过程中内存申请.分配.管理的策略,保证了JVM的高效稳定运行.不同的JVM对于内存的划分方式和管理机制存在着部分差异(典型的不同,就是针对方法区).结合JVM虚拟机规范,来探讨一下经典的JVM内存布局.运行时数据区-详图: 红框处有变化,叫方法区,JDK7…
通常我们都知道在堆空间新生代Eden区满了,会触发minor GC, 在老年代满了会触发full GC, 触发full GC会导致Stop The World, 那你们知道还有一个区域满了一会触发Full GC么?而且这个区域满了会直接影响我们的开发效率. 一.方法区参数调优 我们可以对运行时数据区的内存进行参数设置. 这是jvm调优的重点. 参数的变化将影响到整体效率 核心参数设置如下: java -Xms2048M -Xmx1024M -Xss512k -XX:MetaspaceSize=2…