Java内存结构:基本概念

前言: 面试经常被问到JAVA内存模型和Java内存结构的区别
JAVA内存模型:(共享内存模型JMM)定义了一个线程对另一个线程可见。共享变量存放在主内存中,每个线程都有自己的本地内存,当多个线程同时访问一个数据时,可能本地内存没有及时刷新到主内存,所以就会发生线程安全问题

Java内存结构

在这里插入图片描述

方法区:

是static关键词修饰,常量信息,当class文件被加载的时候,就会初始化,所有的线程会被共享,也就是线程共享资源存放。会有线程安全问题。调优问题: web开发定义常量太多不好。第一点会有线程安全问题。第二点会造成内存溢出。

堆:

创建对象。new创建,数组。存放在堆内存中,堆所有线程会被共享,也有线程安全问题。(堆调优策略。)

栈:

定义的局部变量都存放在栈里面。代码运行完毕,自动释放内存。每个线程不共享,每个线程私有的,不会发生线程安全问题。(类中的方法存放在栈中)

内地方法栈:

主要是用来调 C语音的。(例如:安卓开发,安卓应用层是Java api,最底层是C语音,如果要调用C语言 就是通过 JNI调用。)

PC寄存器:

就相当于底层线程私有的,不会共享,它里面包含指针,计算变量的指针等等

执行引擎:

执行字节码文件的一个作用。也就是负责执行虚拟机的字节码,一般先编译成机器码后执行。

垃圾回收机制

垃圾回收机制是Java语言一个非常重要的特性。通过该机制程序员不用手动去管理内存,大大提高了开发效率,也可以有效避免人为的疏忽造成内存泄露。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值