当我们执行main方法的时候,我们就创建了一个线程,然后在线程里面创建了栈,执行方法,当碰到new的时候我们就在堆里面创建了一个新的对象。

编译类首先找到这个类然后把代码加载到空间里面,然后方法区里面就应该有类的信息了。main方法也是静态方法,执行main方法的时候就会在栈里面开辟一个栈帧,new的时候就会在堆里新建一个对象,每个对象有一个地址。

方法区其实也在堆里面

因为方法区的作用比较特殊,所以我们单独列出来

我们启动一个程序的时候,这个程序会包含很多的线程

我们方法执行的相关调用都在栈里面

每个方法被调用都会创建一个栈帧

我们的虚拟机会为每一个线程创建一个栈我们启动一个程序的时候,这个程序会包含很多的线程。jvm会为每个线程创建一个独立的栈,多个线程之间都是独立的,不能共享。

1。单进程单线程:一个人在一个桌子上吃菜。
2。单进程多线程:多个人在同一个桌子上一起吃菜。
3。多进程单线程:多个人每个人在自己的桌子上吃菜。

多线程的问题是多个人同时吃一道菜的时候容易发生争抢,例如两个人同时夹一个菜,一个人刚伸出筷子,结果伸到的时候已经被夹走菜了。。。此时就必须等一个人夹一口之后,在还给另外一个人夹菜,也就是说资源共享就会发生冲突争抢。

局部变量都在方法里面放着,然后这个方法里面又调用一个新的方法,原来的方法没有关闭。

我们方法执行的相关调用都在这个栈里面,每个方法被调用的时候都会创建一个栈帧。

一个线程里面有一个栈,栈里面有多个栈帧,它们遵循的是先进后出原则。

栈是一个连续的空间,不像堆是乱放的

当我们new对象的时候就说明堆里面多了一个对象

用static修饰的都叫静态方法

当我们在调用main方法的时候就会开辟一个栈帧

建好的堆里面的每个对象都有一个地址,每个对象叫一个内存块。

通过栈来找堆里面的对象对应的属性和方法

栈里面可以存放实际参数和局部变量等

静态方法多次调用内存_java虚拟机的内存分析相关推荐

  1. java虚拟机的内存_Java虚拟机的内存结构

    我们都知道虚拟机的内存划分了多个区域,并不是一张大饼.那么为什么要划分为多块区域呢,直接搞一块区域,所有用到内存的地方都往这块区域里扔不就行了,岂不痛快.是的,如果不进行区域划分,扔的时候确实痛快,可 ...

  2. JAVA虚拟机 安全区域_Java虚拟机的内存区域

    2020年12月10日 阅读 186 关注 Java虚拟机的内存区域 最近在看<深入理解Java虚拟机>,故此写下自己的学习笔记. JVM 运行时数据区域 Java 虚拟机在执行 Java ...

  3. java 看虚拟机内存_java 虚拟机内存介绍

    已经入行快有两年了,然而没有认真看过java虚拟机内存的介绍,下面把自己看的关于java虚拟机内存的介绍写下来,分享给大家. java 虚拟机在运行时将内存分为几个区域,分别为程序记数区,java虚拟 ...

  4. java nio 堆外内存_Java堆外内存之突破JVM枷锁

    对于有Java开发经验的朋友都知道,Java中不需要手动的申请和释放内存,JVM会自动进行垃圾回收:而使用的内存是由JVM控制的. 那么,什么时机会进行垃圾回收,如何避免过度频繁的垃圾回收?如果JVM ...

  5. java9 堆外内存_java堆外内存泄漏排查

    当考虑Java中的内存泄漏时,我们通常会考虑Java堆泄漏,即在堆中分配的对象没有被垃圾收集.这是我在处理一台服务器内存泄漏时的想法,但我即将经历的远超出我的想象. 症状:运行Vertx应用程序(没有 ...

  6. java怎么限制一个对象的内存_java对象的内存布局及创建过程

    一.对象的内存布局 对象的内存结构又可以被分为:对象头,实例数据,对象填充 对象头:对象头结构在32位JVM与64位JVM中的实现细节是不同的 32bit: 64bit: 实例数据:对象真正存储的有效 ...

  7. 虚拟机服务器分配内存,服务器虚拟机分配内存大小

    服务器虚拟机分配内存大小 内容精选 换一换 开发者板形态下,使用16路推理进程并发对1080P图片进行处理,导致内存耗尽,内存申请失败后进程退出.为了防止抖动,默认情况下Engine队列大小为200, ...

  8. 服务器安装虚拟机怎么分配内存,配置虚拟机的内存的方法

    很多情况下我们都会用到虚拟机,那么我们应该如何配置虚拟机的内存呢?不知道的话跟着学习啦小编一起来学习了解配置虚拟机的内存的方法. 配置虚拟机的内存的方法 可以使用以下过程指定主机上要为新虚拟机分配的内 ...

  9. java 减少内存_java中减少内存占用小技巧

    Java做的系统给人的印象是什么?占内存!说道这句话就会有N多人站出来为java辩护,并举出一堆的性能测试报告来证明这一点. 其实从理论上来讲java做的系统并不比其他语言开发出来的系统更占用内存,那 ...

最新文章

  1. WCF wsHttpBinding之Transport security Mode, clientCredentialType=”Basic”
  2. python语言入门p-python入门基础教程04 Python程序基本组成
  3. Python基础教程: with语句详解
  4. iPhone审核条例
  5. 单链表的python实现
  6. 机器学习之最大似然估计(MLE)和最大后验概率估计(MAP)
  7. 计算机网络数据链路层 --- 后退n帧协议(GBN)
  8. android的ui怎么做到流畅,android提高UI的流畅度
  9. 通过例子理解事务的4种隔离级别
  10. php的命名空间实例
  11. ajax同步异步问题
  12. MySQL 批量修改数据库的字符集和排序规则
  13. python中复数类型虚部为零时表示为_关于 Python 的复数类型,以下选项中描述错误的是...
  14. 【服务器数据恢复】IBM DS系列存储硬盘故障导致RAID5崩溃的数据恢复
  15. choco install deno报错
  16. 收发器(Transceiver)架构5——发信机2
  17. ncnn报无法将参数 1 从“std::string”转换为“const ncnn::DataReader
  18. 联想天逸 510S 2022怎么样
  19. kit_00_001-为创建新的虚拟机做准备
  20. vs2022 c#调用interop.word 12.0版本也就是word2007实现首行缩进两个字符

热门文章

  1. MySQL的编译安装
  2. 设置user-agent骗过服务端安全检查
  3. 华为路由器静态路由配置
  4. HDU 2444 The Accomodation of Students
  5. 微软私有云分享(R2)8-PowerShell下载文件
  6. mybatis中foreach
  7. 一个十分简短的Tween
  8. SQL Server数据库收缩日志的方法
  9. Docker安装Tomcat、MySQL和Redis
  10. 并发编程中的大坑:你的直觉有序性问题