Java堆
对于大多数应用来说,Java堆(Java Hcap)是Java虚拟机所管理的内存中最大的一块.Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建. 此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存,这一点在Java虚拟机规范中的描述是: 所有的对象实例以及数组都要在堆上分配,单数随着JIT编译器的发展与逃逸分析技术逐渐成熟, 栈上分配, 标量替换优化技术将会导致一些微妙的变化发生,所有的对象都分配在堆上也渐渐变得不是那么“绝对”了。
Java堆是垃圾收集器管理的主要区域,因此很多时候也被称做“GC”(Garbage Collected Heap,型号国内没翻译成“垃圾堆”)。从内存回收的角度来看,由于现在收集器基于都采用分代收集算法,所以Java堆中还可以细分为:新生代和老生代;再细致一点的由Eden空间、From Survivor空间、To Survivor空间等。从内存分配的角度来看,线程共享的Java堆中可能划分出多个线程私有的分配缓冲区(Thread Local Allocation Buffer,TLAB)。不过无论如何划分,都与存放内容无关,无论哪个区域,存储的仍然是对象实例,进一步划分的没有的是为了更好地回收内存,或者更快地分配内存。
根据Java虚拟机规范的规定,Java堆可以处于物理上不连续的内存空间中,只要逻辑上是连续的即可,就像我们的磁盘空间一样。在实现时,既可以实现固定大小的,也可以是可扩展的,不过当前主流的虚拟机都是按照可扩展来实现的( -Xmx和-Xms控制)。如果在堆中没有内存完成实例分配,并且也无法再扩展时,将会抛出OutOfMemoryError异常。

JVM(java堆)相关推荐

  1. 说下Java堆空间结构,及常用的jvm内存分析命令和工具

    Java堆空间结构图:http://www.cnblogs.com/SaraMoring/p/5713732.html JVM内存状况查看方法和分析工具: http://blog.csdn.net/n ...

  2. 一步步优化JVM四:决定Java堆的大小以及内存占用

    到目前为止,还没有做明确的优化工作.只是做了初始化选择工作,比如说:JVM部署模型.JVM运行环境.收集哪些垃圾回收器的信息以及需要遵守垃圾回收原则.这一步将介绍如何评估应用需要的内存大小以及Java ...

  3. Java必突-JVM知识专题(一): Java代码是如何跑起来的+类加载到使用的过程+类从加载到使用核心阶段(类初始化)+类加载的层级结构+什么是JVM的内存区域划分?Java虚拟机栈、Java堆内存

    前言: 该章节知识点梳理:本文主要是入门和了解jvm,不做深入 1.Java代码是如何运行起来的? 2.类加载到使用的过程? 3.验证准备和初始化的过程? 4.类从加载到使用核心阶段:初始化.类加载器 ...

  4. java 堆内存结构_基于JDK1.8的JVM 内存结构【JVM篇三】

    在我的上一篇文章别翻了,这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析[JVM篇二]中,相信大家已经对java类加载机制有一个比较全面的理解了,那么类加载之后,字节码数据在 ...

  5. JVM优化:决定Java堆的大小以及内存占用

    转载:https://blog.csdn.net/zhoutao198712/article/details/7783070    到目前为止,还没有做明确的优化工作.只是做了初始化选择工作,比如说: ...

  6. Java基础之jvm,堆的分类新生代、老生代和永久代详解

    JVM是Java Virtual Machine(Java虚拟机),是一种用于计算设备的规范,一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的. 引入Java语言虚拟机后,J ...

  7. 【JVM】Java堆内存的新生代和老年代

    edn区.s0.s1都属于新生代,tentired属于老年代.s指survivor. 对象会在eden区分配内存,在经历一次新生代垃圾回收后,如果对象还存活,则进入s0或者s1,并且对象的年龄会加1. ...

  8. jhat命令的html页面,jvm 指令工具 jhat 命令(Java堆分析工具)

    jhat 简介 jhat 全称:Java Heap Analyse Tool(Java堆分析工具),jhat 也是 jdk 内置的工具之一. 功能:主要是用来分析java堆的命令,可以将堆中的对象以 ...

  9. [JVM] java虚拟机 堆

    1.概念 Java 虚拟机所管理的内存中最大的一块,Java 堆是所有线程共享的一块内存区域,在虚拟机启动时创建.此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例以及数组都在这里分配内存. J ...

最新文章

  1. Spring Cloud Gateway之负载均衡
  2. iOS持久化存储-CoreData简介
  3. Spring和Amazon Web Services
  4. python ftplib_python:使用ftplib编写FTP客户端
  5. react获取id_解决React应用界面开发常见痛点(一)业务逻辑与UI分离
  6. 参数过滤mongodb过滤查询键值
  7. 小程序实现分享图片_实现自己的图像识别,基于百度sdk的的图片识别项目
  8. 系统学习机器学习之特征工程(二)--离散型特征编码方式:LabelEncoder、one-hot与哑变量*
  9. QString和std::string转换乱码与sqlite存储汉字乱码
  10. loadrunner 11 破解
  11. Qt编写Modbus从机程序
  12. SQL2000置疑数据库修复
  13. 步进电机基础(6.4)-步进电机的特性测量方法-暂态(阻尼)特性的测量和噪音和振动的测量
  14. 软件自动化测试的学习路线
  15. python右对齐 数字,python怎么让数字右对齐
  16. php集成c sdk,GitHub - cuncle/spider-php-sdk
  17. ROS学习之error解决记录
  18. python源文件改写_Python源文件改写.编写一个程序,读取一个Python源程序,将文件中所有除保留字外的小写字母换成大写字母...
  19. C#设计模式之四建造者模式(Builder Pattern)【创建型】
  20. Django之开发微信小程序后端-会话管理篇③

热门文章

  1. Java面试宝典!java除法保留小数点后两位
  2. 流式低代码编程,拖拽节点画流程图并运行
  3. (web前端网页制作课作业)使用HTML+CSS制作非物质文化遗产专题网页设计与实现
  4. TensorFlow之深层神经网络
  5. 跨平台备份工具Duplicati
  6. DVD刻录缓慢的原因及方法
  7. [android] 手机卫士黑名单功能(ListView结合SQLite增删改)
  8. 三、Oracle/支付宝/旺旺
  9. 排序算法——冒泡排序(图解+代码)
  10. 微信奇销36计 赖老师