灰色的是线程私有,这种地方内存暂用小,基本不存在GC垃圾回收。
亮色是所有线程共享,存在垃圾回收。
Class是类的模板(加载进jvm了,放在了方法区) 和class(在内存上)不一样
模板实例化得到实例
native只有声明,没有实现。
native是一个关键字,用到代码里面说明下面的东西不再是java自己的了,实现是c语言实现的第三方函数库。
native实现要走native方法栈。
PC寄存器记录了方法之间的调用和执行情况,类似排版值日表。
用来存储指向下一条指令的地址,也就是即将要执行的指令代码。
java7及以前 方法区 f=new 永久代
java8 方法区 f=new 元空间
例如 空调 k1=new 格力()
static 静态的就是全员的 大家共用
栈管运行 堆(存储实例)管存储
程序=算法+数据结构
程序=框架+业务逻辑
数据结构经典的:
队列:FIFO
栈:FILO
java 方法(虚拟机外面)=栈帧(虚拟机里面称为)
这个是一个错误(Error),不是异常
java8元空间取代永久区
物理上:新生+养老
逻辑上:新生+养老+元空间(java8)
==================
基本类型传复制 (值不变)引用类型传地址(值变)
======================
最大内存和初始内存最好一样,避免内存峰值峰谷忽高忽低造成卡顿
年轻代垃圾回收算法用复制算法 复制算法不会产生内存碎片 空间换时间 耗空间
复制算法使用的前提是对象的存活率要非常低,必须要客服50%的内存的浪费
JMM
原文:https://www.cnblogs.com/doyi111/p/12541521.html