基于《狂神说java》JVM 入门--学习笔记

这篇博客是作者的学习笔记,主要围绕《狂神说java》讲解了JVM的基础知识,包括JVM的位置、体系结构、类加载器、双亲委派机制、沙箱安全机制、Native方法、PC寄存器、方法区、栈、堆和垃圾回收等方面。还涉及了JMM(Java内存模型)的重要性和理解,并提供了简单的学习总结。
摘要由CSDN通过智能技术生成

前言:

本笔记仅做学习与复习使用,不存在刻意抄袭。

------------------------------------------------------------------------------------------------------------

给各位学友强烈推荐《遇见狂神说》他的整套Java学习路线使我获益匪浅!!!

点击跳转至遇见狂神说哔哩哔哩首页

如果你也是狂神的小迷弟,可以加我好友一起探讨学习。
 


目录

前言:

JVM探究

JVM的位置

JVM的体系结构

类加载器

双亲委派机制

沙箱安全机制(了解)

Native(重点)

PC寄存器(了解)

方法区

三种JVM

新生区

老年区

永久区

GC(垃圾回收)

JMM(Java内存模型)

总结


JVM探究

浅谈jvm面试题

  • 请你谈谈你对JVM的理解? java8虚拟机和之前的变化更新?
  • 什么是00M,什么是栈溢出StackOverFlowError?怎么分析?
  • JVM的常用调优参数有哪些?
  • 内存快照如何抓取,怎么分析Dump文件?知道吗?
  • 谈谈JVM中,类加载器你的认识?

JVM的位置

JVM的体系结构

 

类加载器

package com.example.demo1.demo;

/**
 * @author liar
 */
public class Car {
        public int age;
        public static void main(String[] args) {
            //类是模板,对象是具体的
            Car car1 = new Car();
            Car car2 = new Car();
            Car car3 = new Car();
            System.out.println(car1.hashCode());
            System.out.println(car2.hashCode());
            System.out.println(car3.hashCode());
            Class<? extends Car> aclass1 = car1.getClass();
            ClassLoader classLoader = aclass1.getClassLoader();
            System.out.println(classLoader); //AppCLassLoader
            System.out.println(classLoader.getParent());//ExtCLassLoader
            System.out.println(classLoader.getParent().getParent());//null 1.不存在2.java程序获取不到

        }
}

其运行结果

双亲委派机制

双亲委派机制即:当一个类加载器收到一个类加载请求时,该类加载器首先会把请求委派给父类加载器。每个类加载器都是如此,只有在父类加载器在自己的搜索范围内找不到指定类时,子类加载器才会尝试自己去加载。简单点说,就是遇事先找爹,爹也干不了,就找爷,发现爷已经是最大辈分的了,而且爷也处理不了,那么你就自己处理吧。

我们这里来测试一下双亲委派机制:

 发现编译报错。

沙箱安全机制(了解)

Java安全模型的核心就是Java沙箱(sandbox) ,什么是沙箱?沙箱是-一个限制程序运行的环境。沙箱机制就是将Java代码限定在虚拟机JVM)特定的运行范围中,并且严格限制代码对本地系统资源访问,通过这样的措施来保证对代码的有效隔离,防止对本地系统造成破坏。沙箱主要限制系统资源访问,那系统资源包括什么? CPU、内存文件系统、网络。不同级别的沙箱对这些资源访问的限制也可以不一样。
所有的ava程序运行都可以指定沙箱,可以定制安全策略。
在Java中将执行程序分成本地代码和远程代码两种,本地代码默认视为可信任的,而远程代码则被看作是不受信的。对于授信的本地代码,可以访问- -切本地资源。而对于非授信的远程代码在早期的Java实现中,安全依赖于沙箱(Sandbox)机制。如下图所示JDK1.0安全模型

但如此严格的安全机制也给程序的功能扩展带来障碍,比如当用户希望远程代码访问本地系统的文件时候,就无法实现。因此在后续的Java1.1版本中,针对安全机制做了改进&#x

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值