java 内存简介】的更多相关文章

java程序对内存分配的方式一般有三种: (1) 从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量. (2) 在栈上创建. 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算于处理器的指令集中,效率很高,但是分配的内存容量有限. (3)在堆上分配,亦称动态内存分配.程序在运行的时候用malloc或new申请任意多少的内存,程序员负责在何时用free或delete释放内存.动态内存的生存…
JVM运行时内存结构回顾 在JVM相关的介绍中,有说到JAVA运行时的内存结构,简单回顾下 整体结构如下图所示,大致分为五大块 而对于方法区中的数据,是属于所有线程共享的数据结构 而对于虚拟机栈中数据结构,则是线程独有的,被保存在线程私有的内存空间中,所以这部分数据不涉及线程安全的问题 不管是堆还是栈,他们都是保存在主内存中的 线程堆栈包含正在执行的每个方法的所有局部变量(调用堆栈上的所有方法).线程只能访问它自己的线程堆栈. 由线程创建的局部变量对于创建它的线程以外的所有其他线程是不可见的.…
运行时数据区域 1.程序计数器:是一块较小的内存空间,可以看做当前线程所执行的字节码的行号指示器.字节码解释器工作时就是通过改变计数器的值来选取下一条需要执行的字节码指令,分支.循环.跳转.异常处理.线程恢复等基础功能都需要依赖计数器来完成. 2.JAVA虚拟机栈:java虚拟机栈是线程私有的,生命周期也和线程相同.虚拟机栈描叙的是java方法执行的内存模型.一般情况把java内存分为堆内存和栈内存,而所指的"栈"就是现在所说的虚拟机栈,或者说是虚拟机栈中局部变量表的部分.局部变量表存…
java内存回收机制 不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址.java中对象是采用new或者反射的方法创 建的,这些对象的创建都是在堆中分配,所有对象的回收都是由java虚拟机通过垃圾回收机制完成的.GC为了能够正确释放对象,会监控每个对象的运行状 况,对他们的申请.引用.被引用.赋值等状况进行监控,java会使用有向图的方法进行管理内存,实时监控是否可以到达,如果不可达,则将其回收,这样也 可以消除应用循环的问题.在java语言中,判断一…
JMM:Java Memory Model(Java内存模型),围绕着在并发过程中如何处理可见性.原子性.有序性这三个特性而建立的模型. 可见性:JMM提供了volatile变量定义,final.synchronized块来保证可见性. 如:线程a将共享变量x=1写入内存的时候,如何保证线程b读取到共享变量x的值为1,这就是JMM所做的事情. JMM通过控制内存与每个线程的本地内存之间的交互,来为Java程序员提供内存可见性的保证. 原子性:JMM提供了访问基本数据类型(store和write)…
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 为什么学习Java的内存模式 缓存一致性问题 什么是内存模型 JMM(Java Memory Model)简介 volatitle关键字 原子性 可见性 有序性 指令重排 先行发生——happen-before原则 解释执行和编译执行 其他语言(c和c++)也有内存模型么? 为什么需要关注Java内存模型?   之前有一个我实习的同事(已经工作的)反讽我:学(关注)这个有什么用? 我没有回答,我牢记一句话…
简介 cache4j是一款轻量级java内存缓存框架,实现FIFO.LRU.TwoQueues缓存模型,使用非常方便. cache4j为java开发者提供一种更加轻便的内存缓存方案,杀鸡焉用EhCache? 特性 ·  支持并发. ·  使用简单. ·  因为简单,所以通用,命中率稳定. 使用示例 // 配置 CacheConfig config = CacheConfig.custom().setMaxElement(10000); // 缓存元素个数上限 // 缓存节点工厂 INodeFac…
Java SE 简介 & 环境变量的配置 一.Java 技术的三个方向 Java 技术分为三个方向 javaSE( Java Platform Standard Edition 标准版)用来开发桌面应用程序,例如客户端.它是Java EE的基础,是java技术体系的核心: javaEE( Java Platform, Enterprise Edition,企业版)用来进行企业级应用开发.通常java EE包括JSP.Servlet.JDBC.XML等13种技术: javaME(Java Plat…
[尊重原创文章出自:http://my.oschina.net/xiaohui249/blog/170013] 摘要 从整体上介绍java内存的概念.构成以及分配机制,在此基础上深度解析java中的String类型,从内存分配情况来解析String对象的特性. java 内存 String StringBuffer StringBuilder 一.引题 在java语言的所有数据类型中,String类型是比较特殊的一种类型,同时也是面试的时候经常被问到的一个知识点,本文结合java内存分配深度分析…
转自:http://www.csdn.net/article/2015-05-20/2824722-Java 摘要:本文通过介绍Java的新/旧内存模型,来展示Java技术的历史变迁. 本文通过介绍Java的新/旧内存模型,来展示Java技术的历史变迁. 旧的Java内存模型 Java 使用的是共享内存的并发模型,在线程之间共享变量.Java语言定义了线程模型规范,通过内存模型控制线程与变量的交互,从而实现Java线程之间的通 信.在JDK5之前,Java一直使用的是旧内存模型.如图1所示.变量…