初识JVM——>扫盲

    1. JVM的理解?
    2. java8虚拟机和之前的变化更新?
    3. 什么是OOM
    4. 什么是栈溢出StackOverlowError?
    5. JVM的常用调优参数有哪些?
    6. 内存快照如何抓取,怎么分析Dump文件?
    7. 类加载器的认识?

    JVM的位置

    JVM存在于JRE之内

    JVM作为虚拟机,运行在操作系统之上(常见Windows、Linux、Mac)

    操作系统之下—>硬件体系(Intel、Spac)

    JVM的体系结构

    java程序—>(通过java-c编译)Class File—>类加载器(Class Loader)

    image.png

    —>运行时数据区(Runtime Data Area)(运行时异常就发生在这里,不可捕获)虚拟机就存在于本区域

    image.png

    image.png

    在jvm附近还会有,执行引擎、本地方法接口(本地方法库)

    方法区(Method Area)

    虚拟机栈(VM stack)

    本地方法栈(Native Method Stack)

    堆(Heap)

    程序计数器(Program Counter Register)

    注意:

  1. 栈(即用即弹)、本地方法区、程序计数器不存在垃圾
  2. 所谓JVM调优,毕竟垃圾只能存在于方法区和堆,所以调优更多是在调
 

image.png

PC寄存器(程序计数器)

每个线程都有一个程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码(用来存储只想像一条指令的地址,也即将要执行的指令代码)

在执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不记

方法区

方法区(Method Area)是被所有线程共享的,所有字段和方法字节码,以及一些特殊方法,如构造函数,接口代码 也在此定义

此区域属于共享区间:

静态变量static、常量final、类信息class(构造方法、接口定义)、运行时的常量池

存在于方法区中,但是 实例变量 存在对内存中,和方法区无关

要学会画一个类定义加载阶段的图

Native本地方法区

native关键字是什么?

凡是带了native关键字的说明,java作用范围达不到了,会调用底层C语言的库

我的理解:

就像是前边说的,返回了一个null,已经到了JAVA达不到的范围了,就可以通过native调用C语言的

到了本地方法栈,会调用本地方法接口(JNI),本地方法库

JNI的作用:

融合不同的编程语言,扩展Java类的使用,为Java所用 刚开始就是用来调用C和C++的,后来出现了百花齐放的情况,什么语言都可以了 在内存区域中专门开辟了一块标记区域(本地方法栈),为了登记native方法,会在最终执行的时候,通过JNI加载本地方法库中的方法 不过现在Java发展已经到了一定程度,基本用不上native方法了,一般会放在硬件层面的调用,会涉及native,例如:打印机、管理系统、robot等 企业级应用中较为少见,所以大概了解即可 调用其他接口:Socket、WebSerbice、http等,其实存在意义就是几种语言我想共享

    1. 安全提供者
    2. 消息摘要
    3. 数字签名keytools    https——>需要证书(收费)
    4. 加密
    5. 鉴别
  1. java.security下的类和扩展包下的类,允许用户为自己的应用增加新的安全特性,包括

安全软件包

  1. 是核心API和操作系统之间的主要接口,实现权限控制,比存取控制器优先级高

安全管理器

  1. 存取控制器可以控制核心API对操作系统的存取权限,而这个控制的策略设定,可以由用户指定

虚拟机为不同的类加载器载入的类提供不同的命名空间,命名空间由一系列唯一的名称组成,每一个被装载的类将有一个名字

这个命名空间是由Java虚拟机未每一个类装载器维护的,他们互相之间甚至不可见

类装载器采用的机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值