首页 > 系统相关 >JVM内存结构的划分

JVM内存结构的划分

时间:2024-08-12 09:49:58浏览次数:6  
标签:调用 划分 5.3 内存 JVM new 方法

5.3 JVM内存结构的划分

5.3.1 栈(保存局部变量和方法调用的信息)

栈也是线程私有的,在我们调用方法的时候,每调用一个方法,该方法就会进入栈中,当该方法执行完毕的时候就会从栈中移除。

比如说现在要在main方法中调用A方法,在A方法中再调用B方法:

img

但是,如果我们不停的调用方法,就会导致栈满,这样就会出现栈满了的报错信息。这种现象尤其是在递归的时候容易出现。

栈中还有个比较特殊的叫做本地方法栈,这个栈是存放native方法的,比如hashCode(),同样是线程私有的。

5.3.2 堆 (成员变量和new出来的对象都在堆上)

堆是属于线程共享的,只有一个堆的存在。成员变量和new出来的对象都在堆上,所以堆也是内存中最大的一块空间。需要注意的是,new出来的对象是在堆上,但是对new出来的对象的引用却是在栈上面的。

img

标签:调用,划分,5.3,内存,JVM,new,方法
From: https://www.cnblogs.com/hweiling/p/18354370

相关文章

  • Java学习笔记1--JDK,JRE和JVM
    1、Java开发环境Java开发环境是指Java程序员开发、编写、测试和调试Java程序所使用的所有工具和技术。Java开发环境通常由以下几个部分组成:JDK(JavaDevelopmentKit):JDK是Java开发环境的核心组件,它包括了Java编译器、JRE(Java运行环境)、JavaDoc文档生成器和其他一些工具。JDK是J......
  • 【待看】PHP内存性木马即PHP不死鸟
    https://mp.weixin.qq.com/s/KUA531d_3PKDsUSVgvX0CQPHP内存性木马即PHP不死鸟原创蓝胖子之家蓝胖子之家2023年09月17日00:00山东图片PHP内存性木马是一种比较隐蔽的恶意代码,它的特点是能够在服务器上保持持续运行,而且通常会创建隐蔽的后门,以便攻击者随时可以访问受感染......
  • Linux 下利用 Valgrind 进行内存调试
    目录一、概述二、Valgrind的使用1、基本格式2、Valgrind工具集3、Memcheck3.1使用未初始化的内存3.2内存泄漏3.3在内存被释放后进行读/写3.4内存块的尾部进行读/写4、常见错误三、分析内存泄漏的使用技巧1、Valgrind协调GDB工作2、利用/proc定位问题3、使用......
  • Linux 内存屏障
    一.Linux内存屏障概念Linux内存屏障是一种同步原语,用于确保在多处理器系统或单处理器的乱序执行环境中,内存操作按照特定顺序执行。它们在并发编程、设备驱动程序开发和底层系统编程中扮演着重要角色。以下是关于Linux内存屏障的详细解释:1.基本概念:  •内存屏障是一......
  • 499 道 Java 面试题 (附答案):JVM+ 分布式 + 算法 + 锁 +MQ
    Spring如何管理事务的。Spring怎么配置事务(具体说出一些关键的xml元素)。说说你对Spring的理解,非单例注入的原理?它的生命周期?循环注入的原理,aop的实现原理,说说aop中的几个术语,它们是怎么相互工作的。Springmvc中DispatcherServlet初始化过程。netty......
  • 枚举、typedef、位运算、堆内存-malloc 函数
    目录枚举定义枚举值枚举类型枚举的优点枚举的注意事项示例程序总结typedef基本用法复杂数据类型的重命名位运算位移操作总结堆内存malloc 函数free 函数常见问题枚举定义在C语言中,枚举(enum)是一种数据类型,它允许定义一组具名的常量。使用枚举可以使代码......
  • 【JVM】Java跨平台性质及Java虚拟机内存结构
    目录Java为什么可以跨平台Java虚拟机的内存结构简单聊聊~Java为什么可以跨平台Java编写的代码可以做到一次编译,多平台运行。这是为什么呢?我们在使用Java之前先要去按照对应操作系统版本的JDK,JDK中包含了Java编译器,Java虚拟机,一些类库等。在编写完代码之后,代码通过编译......
  • CUDA--内存访问越界或无效的索引操作解决办法
    报错信息File"D:\anaconda3\envs\HCAVE2\lib\site-packages\torch\nn\utils\rnn.py",line258,inpack_padded_sequencesorted_indices=sorted_indices.to(input.device)RuntimeError:CUDAerror:device-sideasserttriggeredCUDAkernelerrorsm......
  • CUDA--内存访问越界或无效的索引操作解决办法--总结
    设备端的断言错误(device-sideasserttriggered)通常发生在CUDA代码中访问无效的内存地址或执行了无效的操作。解决这种错误需要系统地排查代码中的潜在问题。以下是详细的解决方案:1.检查数组边界确保所有访问数组或指针的操作都在有效范围内。检查线程索引和块索引的计算,确......
  • c++中内存管理
    一、内存划分1、分区介绍(1)栈栈又称做堆栈,用于存储非静态局部变量、函数参数、返回值等,栈的空间是向下增长的。(2)内存映射段内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。(3)堆堆用于程序运行时动态内存分......