1、java是如何管理内存的

Java的内存管理就是对象的分配和释放问题。(两部分)

分配 :内存的分配是由程序完成的,程序员需要通过关键字new 为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。

释放 :对象的释放是由垃圾回收机制决定和执行的,这样做确实简化了程序员的工作。但同时,它也加重了JVM的工作。因为,GC为了能够正确释放对象,GC必须监控每一个对象的运行状态,包括对象的申请、引用、被引用、赋值等,GC都需要进行监控。

2、 JVM的内存区域组成

java把内存分两种:一种是栈内存,另一种是堆内存1。在函数中定义的基本类型变量和对象的引用变量都在函数的栈内存中分配;2。堆内存用来存放由new创建的对象和数组以及对象的实例变量 在函数(代码块)中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量所分配的内存空间;在堆中分配的内存由java虚拟机的自动垃圾回收器来管理

堆和栈的优缺点

堆的优势是可以动态分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的。

缺点就是要在运行时动态分配内存,存取速度较慢; 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。

另外,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。

取消

评论

java 内存空间_怎样用java实现存储空间动态分配相关推荐

  1. java内存区_基于jvm java内存区域的介绍

    jvm虚拟机在运行时需要用到的内存区域.广泛一点就是堆和栈,其实不然,堆和栈只是相对比较笼统的说法,真正区分有如下几个 先上图一: 总的就是 java的内存模型 内存模型又分堆内存(heap)和方法区 ...

  2. java内存释放_如何释放Java中的内存?

    System.gc(); 运行垃圾收集器. 调用gc方法表明,Java虚拟机将花费更多精力来回收未使用的对象,以使它们当前占用的内存可用于快速重用.当控件从方法调用返回时,Java虚拟机将尽最大努力从 ...

  3. 全面理解java内存模型_深入理解Java内存模型(八)——总结

    处理器内存模型 顺序一致性内存模型是一个理论参考模型,JVM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照.JVM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序 ...

  4. java 内存排序_详细解析Java内存,处理器重排序,编译器重排序以及它对线程的影响...

    欢迎大家搜索"小猴子的技术笔记"关注我的公众号,有问题可以及时和我交流. 我们在编写程序的时候有一个编写代码的顺序,那么计算机执行的时候就是按照我们编写代码的顺序来执行的吗?答案是 ...

  5. java 磁盘空间_如何使用Java查找剩余的磁盘空间?

    Java 1.7的API稍有不同,可用getTotalSpace(),getUnallocatedSpace()和getUsableSpace()方法通过FileStore类查询可用空间. Numbe ...

  6. Java 内存 关系_发生在Java内存模型中的关系之前

    (1) What does it really mean by saying "ordered before"? Because even if action_a happens- ...

  7. JVM - 结合代码示例彻底搞懂Java内存区域_对象在堆-栈-方法区(元空间)之间的关系

    文章目录 Pre 示例demo 总体关系 代码示例论证 反汇编 Pre JVM - 结合代码示例彻底搞懂Java内存区域_线程栈 | 本地方法栈 | 程序计数器 中我们探讨了线程栈中的内部结构 ,大家 ...

  8. java 内存测试_请你说一下java jvm的内存机制

    Java虚拟机栈是线程私有的,它的生命周期与线程相同. 局部变量表存放了编译时期可知的各种基本数据类型和对象引用.局部变量表所需的内存空间在编译时期完成分配,当进入一个方法时,这个方法需要在栈帧中分配 ...

  9. java内存空间详解

    Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知识.一般 ...

最新文章

  1. web自适应尺寸方法
  2. openSUSE11.1 用Yast安装virtualbox 2.06
  3. EZBioCloud:16S和原核基因组物种注释和新种鉴定
  4. 数组中查找某个元素是否存在
  5. 争做RTC领域标杆——与华为云副总裁薛浩聊聊我们的视频时代
  6. [html] 你最喜欢html的哪个标签?为什么?
  7. Redis的基础事务
  8. 华扬联众携手搜狗,助雅诗兰黛跃居女神节“C位”
  9. r统计建模与r软件期末考试题_“统计学诺贝尔奖”授予 R 语言软件工程师 Hadley Wickham | 科研圈日报...
  10. C语言和设计模式(继承、封装、多态)
  11. VSTO简介及简单使用
  12. PyQt5-Label背景颜色和文本颜色的设置
  13. php swool 聊天室,swoole简单的聊天室demo(修正版)
  14. 小米笔记本pro lol测试软件,小米笔记本Pro 15增强版游戏性能测评
  15. java gui 打开另一个_从另一个Java服务启动Java GUI应用程序
  16. 《降龙之剑》刷马坐标 BOSS坐标,鉴定出好马的时间段
  17. 中国电子与IBM携手构建健康云平台;微软推3款机器学习工具;【软件网每日新闻播报│第9-26期】
  18. Rust交叉编译开发环境的搭建
  19. c++ std::exception,std::logic_error 异常的使用方法
  20. 黑胶唱片的“另类”用途

热门文章

  1. cmake--gccxml
  2. 2013第51周二eclipse启动优化
  3. android-apt-compiler: Cannot run program D:\android-sdk\platform-tools\aapt
  4. Apache2 httpd.conf配置文件中文版详解
  5. mysql表引擎修改
  6. ant警告 “warning: 'includeantruntime' was not set”解决方法
  7. win7系统相关问题故障解决
  8. 【收藏】HDFS的Java API使用
  9. Scala中Unit 类型、Null 类型和 Nothing 类型
  10. 【Java面试题】计算一个数字的立方根,不使用库函数