JVM内存模型入门
2024-08-31 21:23:33
JVM内存模型入门
本文是学习笔记,原文地址在:https://www.bilibili.com/video/av62009886
综述
其实没有太多新东西
JVM主要分为五个区域:栈区、堆区、本地方法栈、程序计数器和方法区(元数据空间)。
本地方法栈是存储C++的native方法运行的栈区
程序计数器指向程序运行的位置
方法区主要存储静态的方法和变量,类加载器classloader等等全局的数据
堆区主要存对象,栈区存储对象的引用类型
栈、本地方法栈和程序计数器合起来是线程私有的,堆区和方法区是全局共享的。
实例讲解
值类型函数调用
在栈空间存储活动记录:
函数运行完成后,栈空间会被释放
Java的基础数据类型都是值类型,但包装类不是!包装类是引用类型,数据在堆上!
对象类型函数调用
注意看函数中的那个Person p=new Person();
,它在堆上开辟了一段内存并存储对象(由于没有初始化,id默认是0,name默认是null),栈中保存的是引用类型,只占4个字节,此时函数参数也是地址,所以我们对对象的修改会持久反映在对象上,这就是和值类型的不同。
方法区
例如main函数,就是存在于方法区的(因为它是静态方法)。
一个例子
例如如下这段代码:
注意这里的Main和main函数不是一回事,Main是指那个大类。new Main().func1(p2);
看的时候不要混了。实际上是创建了一个新的匿名对象并调用了这个对象的func1方法
最新文章
- 和我一起学python,控制语句 (life is short ,we need python)
- (六)、nodejs中的express框架获取http参数
- 关于Servlet的PrintWriter 中文乱码问题
- C++转换unicode utf-8 gb2312编码
- 【hdu3065】病毒侵袭持续中
- 常用SQL代码段
- 关于python 模块导入
- POJ 2115 C Looooops(扩展欧几里得应用)
- 关于指针要注意的地方还有尝试在codeblocks上建立项目
- tablehost
- [LeetCode] Range Sum Query - Mutable 题解
- .24-浅析webpack源码之事件流compilation(2)
- BZOJ 1854: [Scoi2010]游戏 [连通分量 | 并查集 | 二分图匹配]
- 如何让window.open()以post请求方式调用(巧妙解法)
- android studio设置代理更新
- vue-element-ui之弹窗重置
- 为虚机Linux系统设置静态IP,ping通外网并解决相关问题
- 基于AT89C51单片机烟雾传感器
- maven在Idea建立工程,运行出现Server IPC version 9 cannot communicate with client version 4错误
- WPF编程,窗口保持上次关闭时的大小与位置。