java虚拟机的内存机制】的更多相关文章

我们都知道,java程序的跨平台性离不开java虚拟机,虚拟机隔绝了底层操作系统,使得java程序可以直接运行在虚拟机之上.所以,对java的学习,离不开对java虚拟机的学习与了解.下面简单整理下java虚拟机的内存模型,用于备忘,加深理解. 一.java虚拟机的模型 话不多说,先上张内存模型图吧: 百度来的图,大概也描述清楚了我们常用的虚拟机的内存模型了,主要分为两大类:线程共享(相当于所有线程都可以访问,如果是单线程程序则对应所有方法都能访问)和线程私有(属于某个线程的数据域),其实我们刚…
一.引言: 在Java中我们只需要轻轻地new一下,就可以为实例化一个类,并分配对应的内存空间,而后似乎我们也可以不用去管它,Java自带垃圾回收器,到了对象死亡的时候垃圾回收器就会将死亡对象的内存回收. 真的只要根据需要巴拉巴拉地new而不用管内存回收了吗?那为什么会存在这么多的内存溢出情况呢?下面我们就需要了解一下Java内存的回收机制,只有了解了其虚拟机的回收原理才能更好的管理内存,避免内存溢出. 二.Java虚拟机的内存区域 首先,我们得知道在我们的虚拟机中内存到底是怎么划分区域的,下面…
版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 我们都知道,当虚拟机执行Java代码的时候,首先要把字节码文件加载到内存,那么这些类的信息都存放在内存中的哪个区域呢?当我们创建一个对象实例的时候,虚拟机要为对象分配内存,Java虚拟机又是如何配分内存的呢?这些都涉及到Java虚拟机的内存划分机制,今天我们就来探究一下Java虚拟机的内存模型. Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途以及创建和销毁的时间,有的区域随…
JVM学习(1)——通过实例总结Java虚拟机的运行机制-转载http://www.cnblogs.com/kubixuesheng/p/5199200.html 文章转载自:http://www.cnblogs.com/kubixuesheng/p/5199200.html 特别在此声明.那位博主写的真的很好 ,感谢!! 俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: JVM的历史 JVM的运行流程简介 JVM的组成(基于 Java 7) JVM调优…
Java 虚拟机的类加载机制 关于类加载机制: ​ 虚拟机把描述类的数据从Class 文件加载到内存,并对数据进行效验.转换解析和初始化,最终 形成可以被虚拟机直接使用的Java 类型,就是虚拟机的类加载机制. 1.初始化 时机 1.遇到 new .getstatic .putstatic .invokestatic 这四个字节码指令时.触发这四条指令的场景: 使用new 实例化对象时 读取或设置一个类的静态字段(被final修饰,已在编译期把结果放入常量池的不算(即 常量不算,static f…
一.为什么要了解java虚拟机的内存模型 java虚拟机作为java代码运行的平台,是java技术的基石.了解java虚拟机的内存模型也就变得十分必要.它能帮助我们更好的了解java代码的运行机制,更快的定位到一些bug,也能进行相关的性能调优等. 二.java虚拟机的内存模型 1.java堆(java heap): java虚拟机在启动的时候会创建java堆,它是java虚拟机所管理的内存最大的一块. 其作用就是存放对象的实例,几乎所有的对象都是在这里存放. 这个区域是由所有线程共享的,它也是…
众所周知,Java程序员写的代码是没有办法控制Java对象的内存释放的,完全有JVM暗箱操作. 虽然程序员把内存的释放的任务都交给了Java虚拟机,但是并不代表Java程序就不存在内存泄漏. 反而,某程度上,当出现内存泄漏,Debug会变得难度更大. 所以,Java程序员,有必要去了解Java虚拟机对于内存的管理以及垃圾回收的机制. Java虚拟机是如何判断一个对象可以回收? 当一个对象没有被任何其他所引用时,这个对象被Java虚拟机视为可回收. 早起的虚拟机,使用引用计数的方法判断对象是否可回…
java虚拟机的内存区域分配   在JVM运行时,类加载器ClassLoader在加载到类的字节码后,交由jvm的执行引擎处理, 执行过程中需要空间来存储数据(类似于Cpu及主存),此时的这段空间的分配和释放过程是 此处需要关心和理解的,暂可以称为运行时的数据的内存区的分配,   首先运行时的数据区包括,程序计数器,以及Stack(虚拟机 栈),以及虚拟机堆,方法区,本地方法栈, 虽然运行时区域分配只要包含上述的描述组件,但实际运行中,程序计数器外,应该再加一个寄存器, 目前先描述上面5个,寄存…
原创文章,转载请标明出处! 目录 一.背景 二.运行时内存区域概述 1.官方描述 2.中文翻译 3.内存区域简述 4.运行时数据区简图 5.运行时数据区详图 三.JVM线程 JVM数据区域与线程关系 1.官方描述 2.中文解释 3.关系图 四.PC寄存器 1.官方解释 2.中文翻译 3.概述 3.什么是上下文切换? 4.什么是CPU时间片? 5.为什么PC寄存器是"线程私有"的? 五.虚拟机栈 1.官方解释 2.中文解释 3.概述 4.栈的结构 5.栈的存储 6.栈的运行原理 7.局部…
我们在参加面试的时候,经常被问到一些关于类加载机制的问题,也都会在面试之前准备的时候背好答案,但是我们是否有去深入了解什么是类加载机制呢?这段时间因为一些事情在家看了些书,这次就和大家分享一些关于Java类加载机制的知识. 虚拟机的类加载机制:Java虚拟机把数据加载到内存,同时对数据进行校验.解析.初始化等一些列操作,最终把Class文件变为虚拟机可以直接使用的Java类型文件. 一个类从被加载到虚拟机内存开始,直到卸载出内存为止,他的生命周期会经历加载.验证.准备.解析.初始化.使用和卸载七…