JVM(1)

1、JVM结构

 

3,类加载器:

作用:加载Class文件

1.虚拟机加载器:

>2、Bootstrap classLoader启动类(根)加载器:tr.jre主要负责加载核心的类库

>3、ExtClassLoade扩展类加载器:jre/lib/ext:扩展的jar

>4、AppClassLoader应用程序(系统类)加载器:主要负责加载应用程序的主函数类。

1-1双亲委派

 

过程:

1.类加载器收到类加载的请求!

2.将这个请求向上委托给父类加载器去完成,一直向上委托,直到启动类加载器(都很懒想看自己的上级能否处理,如果可以自己就不用处理了)

3.启动加载器检查是否能够加载当前这个类,能加载就结束,使用当前的加载器,否则,抛出异常,通知子加载器进行加载

4.重复步骤3

CLass Not Found I*╱

2、沙箱安全机制

一、基本组件

  • 字节码校验器:确保Java语言规范
  • 类加载器:。它防止恶意代码去干涉善意的代码;l双亲委派机制,I

。它守护了被信任的类库边界;

。它将代码归入保护域,确定了代码可以进行哪些操作。|

  • 存取控制器:控制核心API对操作系统的存取权限
  • 安全管理器:核心API操作系统之间的主要接口

3、native方法区:凡是带了native 关键字的,说明java的作用范围达不到了,回去调用底层C语言的库!

~会进入本地方法栈

~调用本地方法本地接口JNI

~JNI作用:扩展Java的使用,融合不同的编程语言为ava所用!最初:c、C++。

~它在内存区域中专门开辟了一块标记区域:Native Method Stack,登记native方法

~在最终执行的时候,加载本地方法库中的方法通过JNI

4、PC寄存器

程序计数器:Program Counter Register

每个线程都有一个程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码(用来存储指向像一条指令的地址,也即将要执行的指令代码),在执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不计

5.方法区:

Method Area方法区

方法区是被所有线程共享,所有字段和方法字节码,以及一些特殊方法,如构造函数,接口代码也在此定义,简单说,所有定义的方法的信息都保存在该区域,此区域属于共享区间;

静态变量;常量、类信息(构造方法、接口定义)、运行时的常量池存在方法区中,但是实例变量存在堆内存中,和方法区无关=

static,final,Class,常量池

6.栈:8大基本数据类型+对象引用+实例的方法,一个栈一个线程

~什么是进程什么是线程:程序:完成特定任务的一系列指令集合

~进程:正在进行中的程序

1、用户角度:进程是程序的一次动态运行

2、操作系统:进程是对操作系统的分配资源的基本单位,也是最小单位

       

~线程:cpu调度的最小单位。

7、栈+堆+方法区:交互关系,存储的全部都是对象,每个对象包含了一个与之对应的 class 类的信息,会被所有线程共享。

对象在内存中实例化的过程

8、堆:一个JVM只有一个堆内存,堆内存大小是可以调节的(类,方法,常量)

  • 新生区
  • 养老区
  • 永久代

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值