码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JVM内存管理模型(初步)


    目录

     

    1.JVM虚拟机,在Java执行中拿到了自己能够支配的内存后,分为了五个区域:

     (1)简要分析

    (2)举例

    例1

    例2


    1.JVM虚拟机,在Java执行中拿到了自己能够支配的内存后,分为了五个区域:

    栈区,堆区,本地方法栈,方法区,程序计数区

     (1)简要分析

    本地方法栈:

    存储c++的native方法

    程序计数器:

    指向当前程序运行的位置

    方法区:

    存储一些元数据信心,jdk7之前又叫永久代,Jdk8改了,存static静态变量,累加器classloader等等全局的信息。

    栈区:

    用于存储当前运行的函数中的临时变量等等,和c++类似,进栈出栈。

    线程私有:

    栈区、 本地方法栈、程序计数器是线程私有的,也就是说,每个线程在运行中都会,分别创建自己的这一份内存(栈区、 本地方法栈、程序计数器),那就说明有多少个线程就有多少个栈区。而堆区和方法区是全局共享的。

    堆区:

    用于存对象的。那我们之前说栈区里也有变量,那肯定也有对象,这矛盾吗?并不矛盾,栈区里存的那是对象的引用即地址,指向实际存在堆区里面的对象。然后下面这篇文章还不错,看看。Java中基本数据类型和引用数据类型的存放位置_roon9527的博客-CSDN博客_java基本数据类型存储在哪里

    (2)举例

    例1

     删除时也是后入先出,先删除b再删除a。但是main函数运行结果是20,10这是为什么呢?

    20是func1里面打印的没问题,至于最后main里面a还是10:

    这里是传值,所以func1栈区里面啊,自己有一个不同于main栈里面的a(形参),改的也是这个,并且最后还都被删了,所以留下的依旧是main栈里面的a。

    例2

     

    p是引用类型,类似于指针,是个占4个字节的地址。id=1就是等于1.

    重点在于这个string的赋值,你也可以回忆自己的笔记,这样直接赋值不new,会以字符串常量的形式存在方法区的常量池(有一个存字符串的串池)中,而如果想开辟一个空间,按一般引用操作的话,那得改成p.name = new String("liming")才对,此时堆里面会这样:

     然后结束清空,也很重要:

     首先栈里面的东西直接拿掉,这没问题,但是堆里东西怎么办呢?那就要用到GC了。

    堆上创建的对象不能随着函数运行完毕而自动清理的,因为我们也不知道是不是有其他地方还用到了这些对象。GC在下一篇笔记专门做。

    例3:

     这很简单,传引用不会创建副本,地址指向Main的p2,肯定直接就是改堆里面的。

  • 相关阅读:
    软件项目管理 6.10.成本预算
    Ubuntu宝塔显示磁盘被占满的解决方法
    MYSQL入门与进阶(七)
    从零到一构建koa+ts项目(初始化)
    创建一个javascript公共方法的npm包,js-tool-big-box,发布到npm上,一劳永逸
    函数的参数
    Android 的编译环境
    在 SpringBoot 中使用 ThreadPoolTaskScheduler 实现定时任务
    数据交易怎样实现
    国产音频放大器工作原理以及应用领域
  • 原文地址:https://blog.csdn.net/keepstrivingchy/article/details/126757606
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号