Java
文章平均质量分 82
Hi丶ImViper
这个作者很懒,什么都没留下…
展开
-
2021大厂面试Java真题合集!上百道题包含答案!刷完无惧任何面试!
2021大厂面试真题合集!上百道题包含答案!刷完无惧任何面试!先上链接: https://w86fskhnhi.feishu.cn/base/appcnPi0qF2EusU1Nb5Ea70lAEe?table=tblE6N0F7Zn9kRb7&view=vewfw5h5zp这些题目都是Viper自己在面试期间的准备,以及对这些问题的答案整合。基本上刷完之后,面试的问题除非很刁钻,否则就难不倒你了。链接里面有详细的使用教程,欢迎各位取用。下面为部分真题截图。...原创 2021-06-30 18:12:37 · 2525 阅读 · 7 评论 -
一文搞定权限管理!授权、鉴权超详细解析
一文搞定权限管理!授权、鉴权超详细解析授权概览什么是授权 (Authorization)?广义上的授权:是上级将完成某项工作所必须的权力授给部属人员;是领导者通过为员工和下属提供更多的自主权,以达到组织目标的过程。信息系统中的授权:是管理员将某些资源的访问、管理、操作等权限赋予用户,达到管理和使用的目的。譬如主机的访问使用权限,某项功能菜单的使用权限亦或是某个数据的读写权限。本文将对信息系统中的授权进行着重讲解授权的意义授权管理是所有业务系统不可缺少的一部分!企业角度:1)贴合管理制度原创 2021-06-30 17:06:38 · 5759 阅读 · 0 评论 -
《剑指offer》Java版全系列题解(2021版,持续更新!)
《剑指offer》Java版全系列题解(2021版,持续更新!)本系列记录了最新版 《剑指Offer》 的题解过程与代码,因为原书是c语言。这里用Java代码复现并优化,并包含解题分析。希望各位能够点赞,收藏!关注我! 每日更新!如果在准备java面试,可以看看我的另外一篇文章! Java面试复习体系总结(2021版,持续更新)csdn题解(包含详细分析过程,代码)力扣链接 剑指Offer系列(java版,详细解析) 03. 数组中重复的数字剑指 Offer 03. 数组中重复原创 2021-03-12 13:11:36 · 22440 阅读 · 19 评论 -
java中提取整数上的各位数字,数位求和,两种解法!
数位之和计算:算法中遇到很多到题都是要计算一个整数的各位数字,这里提供二种解法。1.末尾取余法设一数字 x ,向下取整除法符号 //,求余符号 ⊙\odot⊙ ,则有:x⊙10x \odot 10x⊙10 :得到 x 的个位数字;x//10x // 10x//10 : 令 x 的十进制数向右移动一位,即删除个位数字。因此,可通过循环求得数位和 s ,数位和计算的封装函数如下所示:int sums(int x) int s = 0; while(x != 0) {原创 2021-03-11 15:24:51 · 3932 阅读 · 2 评论 -
Java特性:Lambda表达式 (详细解析,源码分析)
一:简介JDK的升级的目的有以下几个:增加新的功能、修复bug、性能优化、简化代码等几个方面,Lambda表达式就是属于简化代码,用于简化匿名实现类,提供一种更加简洁的写法。Lambda表达式在Swift语言中称之为代码块,Lambda表达式可以认为是一种特殊的接口,该接口必须只有一个抽象方法。语法(参数类型 参数名, 数参数类型 参数名2...) -> { // code};小括号()中的内容就是方法中的参数列表包括参数类型、参数名,其中参数类型是可以省略的,当参数个数只有一个时也可以原创 2021-03-05 11:40:04 · 463 阅读 · 0 评论 -
java面试常见问题大全!准备春招面试必看!
目录面试题面试技巧面试题Java 基础说说你对Fail-Fast的理解什么是面向对象JDK 和 JRE 有什么区别== 和 equals 的区别是什么两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?final 在 Java 中有什么作用?String 属于基础的数据类型吗?Java中操作字符串都有哪些类?它们之间有什么区别?String str="i"与 String str=new String(“i”)一样吗?如何将字符串反转?普通原创 2021-02-28 19:34:39 · 592 阅读 · 0 评论 -
java春招面试冲刺系列:linux面试问题大全!
学习笔记Zero-Copy的前世今生清空文件 sudo sh -c “echo ‘’ > a.txt”重命名 mv folderAName newFolderName创建软链 ln -s sourcefile targetfileln -s /xxx/xx/eclipse eclipseLink使用代理下载文件 wget -e use_proxy=yes -e http_proxy=x.x.x.x:1080设置ulimit sudo sh -c “ulimit原创 2021-02-28 19:32:39 · 2129 阅读 · 7 评论 -
java春招面试冲刺系列:redis基础知识详细解析
目录学习计划学习笔记百问redis在什么情况下会变慢?单线程的redis,如何知道要运行定时任务?学习计划Redis的介绍、优缺点、使用场景Linux中的安装常用命令Redis各个数据类型及其使用场景Redis字符串(String)Redis哈希(Hash)Redis列表(List)Redis集合(Set)Redis有序集合(sorted set)Redis - 瑞士军刀慢查询pipeline流水线发布订阅bitmapHyperLogLog原创 2021-02-18 11:47:03 · 8805 阅读 · 5 评论 -
java春招面试冲刺系列:log日志详细复习
目录导读Log的发展历程历史原生Java日志组件长什么样logback与log4j2比较SLF4J门面日志的好处Log4j2使用Log4j2的两种配置方式Log4j2的三大组件Log4j2常用配置文件详解异步日志动态调整日志级别代码示例引用导读在日常的面试中,问到日志这块的很少,但是也会问到关于日志的选型和对比,主要考察你平时的总结。我这篇笔记呢主要是从Java中日志的发展历史,到流行的log4j2的常规使用和规范进行一个系统的总结。Log的发展历程历史原创 2021-02-18 11:44:08 · 719 阅读 · 0 评论 -
java春招面试冲刺系列:spring注解详细解析
相关问题为什么要引入注解元注解有哪些Spring常用的注解有哪些SpringBoot常用注解有哪些SpringCloud常用注解有哪些为什么要引入注解注解是JDK1.5引入的功能。注解可以看作是对类和方法的扩展标识,这些标识可以在编译,类加载,运行时被读取,并执行相应的处理。在注解之前,我们只能通过xml配置的方式来做。由于XML的配置诸多不便,并且配置和代码分离,不便于代码阅读,慢慢的注解就替代了xml配置的方式。元注解有哪些元注解是负责对其它注解进行说明的注解,自定义注解时可以使用原创 2021-02-18 10:04:32 · 461 阅读 · 1 评论 -
java春招面试冲刺系列:JSP知识总结
JSP知识总结目录JSP简介JSP-Velocity-FreeMarker对比JSP结构JSP生命周期JSP语法JSP-HTTP状态码JSP表单处理JSP编码设置JSP是不是被淘汰JSP Velocity FreeMarker对比JSTL库安装JSP简介什么是Java Server Pages?JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。JSP是一种J原创 2021-02-18 09:08:31 · 435 阅读 · 3 评论 -
java春招面试冲刺系列:java基础知识复习
一、数据类型基本类型byte/8bitchar/16bitshort/16bitint/32bitfloat/32bitlong/64bitdouble/64bitboolean/~boolean 只有两个值:true、false,可以使用 1 bit 来存储,但是具体大小没有明确规定。JVM 会在编译时期将 boolean 类型的数据转换为 int,使用 1 来表示 true,0 表示 false。JVM 支持 boolean 数组,但是是通过读写 byte 数组来实现的。1by原创 2021-02-17 09:36:01 · 755 阅读 · 2 评论 -
java春招面试冲刺系列:IO详细解析
IO简介IO是Java中的一种输入和输出的功能,Java中对这种操作叫做对流的操作。流代表的是任何有能力产出数据的数据源对象或者是有能力接受数据的接收端对象。流的本质是数据传输,流不只是对文件可进行读写,还可以对内存、网络、程序操作。学习笔记NIO是同步的IO,是因为程序需要IO操作时,必须获得了IO权限后亲自进行IO操作才能进行下一步操作。AIO是对NIO的改进(所以AIO又叫NIO.2),它是基于Proactor模型的。每个socket连接在事件分离器注册 IO完成事件 和 IO完成事件处理原创 2021-02-17 09:35:15 · 555 阅读 · 1 评论 -
java春招面试冲刺系列:java并发基础
目录Java为什么会有并发问题什么是CASUnsafe类解读JUC原子类JUC原子类介绍基础类型AtomicInteger线程池Java为什么会有并发问题出现的原因因为Java是一种多线程的处理模型。所以当一个请求过来的时候,Java会将产生一个线程来处理这个请求。如果多个线程访问同一个共享变量的时候,就会出现并发问题。所以,并发问题产生的条件之一是“共享变量”。那么什么样的变量是共享变量呢?这就涉及到Java内存模型JMM了,Java内存模型中,一个Java线程,要想获取到原创 2021-02-17 09:34:23 · 569 阅读 · 1 评论 -
java春招面试冲刺系列:java多线程精华内容详解
目录基础概念进程与线程单线程与多线程实现线程的4中方式thread.start()和runnable.run()的区别Thread和Runnable的异同线程的基本操作线程的优先级与守护线程synchronized关键字实例锁与全局锁wait和notify线程的让步yeild线程的休眠sleepThread中的join线程的中断interrupt线程的状态与转换生产者消费者问题钩子线程线程中的异常基础概念进程与线程进程(Process)是计算机中的原创 2021-02-17 09:33:40 · 665 阅读 · 1 评论 -
为什么重写equals()后必须重写hashCode()?超详细解析!
为什么重写equals()后必须重写hashCode()?超详细解析!本文的内容主要解决下面几个问题:1 equals() 的作用是什么?2 equals() 与 == 的区别是什么?3 hashCode() 的作用是什么?4 hashCode() 和 equals() 之间有什么联系?第1部分 equals() 的作用equals() 的作用是 用来判断两个对象是否相等。equals() 定义在JDK的Object.java中。通过判断两个对象的地址是否相等(即,是否是同一个对象)来区分原创 2021-02-05 19:36:00 · 279 阅读 · 0 评论 -
《Java 并发编程实战》阅读笔记5系列:02-并发程序测试的陷阱
并发程序测试并发程序测试并发程序测试的陷阱如何检查一个多生产者多消费者模式的正确性阻塞队列性能比较1: 34.98+55.5 + 9.71 100.192:55.5 +9.71 65.213: 9.716并发程序测试的陷阱垃圾回收垃圾回收操作不可预测解决方法:测试运行时,GC一次都不执行测试运行时,GC多次运行,需要足够长的时间(几分钟)[更好]动态编译JVM 是解释执行和编译执行相结合的。某个类第一次执行时,JVM 会通过解释字节码的方式执原创 2021-02-02 18:28:22 · 256 阅读 · 0 评论 -
《Java 并发编程实战》阅读笔记3系列:补充01-HashMap_HashTable_TreeMap
对比 HashMap & HashTable & TreeMap对比 HashMap & HashTable & TreeMap基本区别HashMap 源码分析HashMap 内部结构容量、负载因子和树化基本区别它们都是最常见的 Map 实现,是以键值对的形式存储数据的容器类型。HashTable线程安全,不支持 null 作为键或值,它的线程安全是通过在所有方法 public 方法上加 synchronized 实现的,所以性能很差原创 2021-01-28 11:10:40 · 247 阅读 · 0 评论 -
《Java 并发编程实战》阅读笔记3系列:04-安全取消线程
安全取消任务安全取消任务简单的任务取消方法中断!!!中断方法中断是如何解决简单的任务取消方法中的阻塞问题的?ThreadPoolExecutor 拥有的线程检测到中断时的操作Future 实现计时运行安全停止基于线程的服务线程的所有权一个有问题的日志服务方法一:BlockingQueue + isShutdown + count方法二:线程池 ExecutorService毒丸对象处理 RuntimeException处理方法JVM 关闭关闭原创 2021-01-28 11:07:01 · 265 阅读 · 0 评论 -
《Java 并发编程实战》阅读笔记2系列:对象的安全共享
对象的安全共享对象的安全共享可见性概述失去可见性的危害对抗可见性问题的法宝:volatile!特点两个特点的实现原理!Java 内存模型中对 volatile 变量定义的特殊规则与 synchronized 的区别应用场景:通过确保状态不被发布来保证安全性发布与溢出发布发布方法:溢出一个简单的溢出过程this 引用溢出!线程封闭栈封闭ThreadLocal 类ThreadLocal 实现原理不可变对象定义使用原创 2021-01-25 10:44:52 · 269 阅读 · 0 评论 -
《Java 并发编程实战》阅读笔记2系列:线程的安全性
线程的安全性线程的安全性加锁:synchronized使用方法synchronized 锁是可重入的如何减小 synchronized 对应用性能的影响synchronized 的原理对象头Monitor Record锁优化偏向锁轻量级锁线程安全性主要解决了如何避免多个线程在同一时刻访问同一个数据的问题,它主要通过加锁的方式,使得多个线程排成一队,一个一个的访问数据,也是由于这个原因,通过这种方式保证线程安全会对应用的性能产生影响。加锁:synchr原创 2021-01-25 10:44:22 · 310 阅读 · 0 评论 -
《Java 并发编程实战》阅读笔记1系列:Java线程-原理篇
Java 线程线程是比进程更轻量级的调度执行单位,CPU 调度的基本单位就是线程。线程的引入,将一个进程的资源分配和执行调度分开。各个线程既可以共享进程资源(内存地址、文件 I/O 等),又可独立调度。Java 线程学习地图Java 线程:原理篇Java 线程:原理篇线程的调度线程的实现原理三种线程的实现方式使用内核线程实现优点和缺点使用用户线程实现优点和缺点使用用户线程加轻量级进程Java 线程的实现线程的调度协同式线程调度:原创 2021-01-23 11:17:29 · 340 阅读 · 0 评论 -
《Java 并发编程实战》阅读笔记1系列:Java线程-使用篇
Java 线程:使用篇Java 线程:使用篇如何在 Java 中使用多线程继承 Thread 类实现 Runnable 接口实现 Callable 接口线程数配置原则线程间的通信方式选择通信选择不通信如何在 Java 中使用多线程继承 Thread 类// 自定义线程对象class MyThread extends Thread { public void run() { // 线程需要执行的代码 }}// 创建线原创 2021-01-23 11:16:53 · 304 阅读 · 0 评论 -
《Java 并发编程实战》阅读笔记1系列:01-Java线程-概念篇
Java 线程线程是比进程更轻量级的调度执行单位,CPU 调度的基本单位就是线程。线程的引入,将一个进程的资源分配和执行调度分开。各个线程既可以共享进程资源(内存地址、文件 I/O 等),又可独立调度。Java 线程学习地图Java 线程:概念篇Java 线程:概念篇线程的生命周期状态通用的线程生命周期Java 中线程的生命周期线程的生命周期状态转换可运行/运行状态 -> 休眠状态初始状态 -> 可运行/运行状态可运行/运行状态 -> 中止状态原创 2021-01-23 11:16:27 · 305 阅读 · 0 评论 -
JavaWeb项目:个人主页生成器网站(java+mysql+tomcat+vuejs,内附部署到云服务器ECS教程!以及采用Palor数据库的方法)
个人主页生成器本项目制作了一个个人主页的生成器。能够实现输入个人数据,生成一个在线网站供他人查看你的信息。项目地址https://github.com/ImViper/HomePage_Generator运行环境JavaWebMysql 8.0Tomcat 9.0.39VueJs阿里服务器ECS (非必须)阿里云数据库(非必须)效果展示填写信息界面生成界面如果想要采用polarDB数据库,将数据库部署到云上,请参考这个文章申请。之后修改代码中的数据库链接原创 2021-01-19 20:30:13 · 2019 阅读 · 1 评论 -
原创 《深入理解 Java 虚拟机》阅读笔记3系列:Java运行期优化
运行期优化我们知道,Java 是解释执行的,可是解释执行毕竟还是有点慢的,这也使得 Java 一直被认为是效率低下的语言……,不过随着即时编译技术的发展,Java 的运行速度得到了很大的提升,在本篇文章中,我们将会对 Java 的运行期优化,也就是即时编译 (Just In Time, JIT) 时进行的优化进行详细的讲解,我们先来看看什么是即时编译。运行期优化即时编译HotSpot 虚拟机内的即时编译器运作过程为什么要使用解释器与编译器并存的架构?为什么虚拟机要实现两个不同的 JIT原创 2021-01-17 11:05:19 · 381 阅读 · 0 评论 -
原创 《深入理解 Java 虚拟机》阅读笔记3系列:虚拟机调优案例分析
虚拟机调优案例分析虚拟机调优案例分析高性能硬件上的程序部署策略服务系统经常出现卡顿(Full GC 时间太长)除了 Java 堆和永久代之外,会占用较多内存的区域从 GC 调优角度解决新生代存活大量对象问题(Minor GC 时间太长)高性能硬件上的程序部署策略补充:64 位虚拟机在 Java EE 方面,企业级应用经常需要使用超过 4GB 的内存,此时,32 位虚拟机将无法满足需求,可是 64 位虚拟机虽然可以设置更大的内存,却存在以下缺点:内存问题: 由于指针膨胀和原创 2021-01-17 11:04:41 · 467 阅读 · 1 评论 -
原创 《深入理解 Java 虚拟机》阅读笔记3系列:JVM常见参数设置
JVM 常见参数设置JVM 常见参数设置内存设置参数设置经验收集器设置参数内存设置参数-Xms:初始堆大小,JVM 启动的时候,给定堆空间大小。-Xmx:最大堆大小,如果初始堆空间不足的时候,最大可以扩展到多少。-Xmn:设置年轻代大小。整个堆大小 = 年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为 64M,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun 官方推荐配置为整个堆的 3/8。-Xss: 设置每个线程的 J原创 2021-01-17 11:04:13 · 284 阅读 · 0 评论 -
原创 《深入理解 Java 虚拟机》阅读笔记3系列:常用虚拟机性能监控工具
常用虚拟机性能监控工具常用虚拟机性能监控工具JDK 命令行工具补充:ps 命令 (Linux)JDK 命令行工具其中的重中之重是 jstat 命令!而它最常用的参数就是 -gcutil,使用格式如下:jstat -gcutil [pid] [intervel] [count]输出如下:S0:堆上 Survivor space 0 区已使用空间的百分比S1:堆上 Survivor space 1 区已使用空间的百分比E:堆上 Eden 区已使用空间的百分比O:堆上 O原创 2021-01-17 11:03:38 · 250 阅读 · 0 评论 -
《深入理解 Java 虚拟机》阅读笔记2系列:附录:实现Java类的热替换
实现 Java 类的热替换实现 Java 类的热替换什么是热替换及其实现原理实现简单的 Java 类热替换需求分析实现类加载器什么是热替换及其实现原理热替换是在不停止正在运行的系统的情况下进行类(对象)的升级替换;这要求虚拟机中要存在同一个类的两个不同版本。可我们知道,我们是无法将同一个类加载两遍的,想要实现这点,我们需要让虚拟机认为这是两个不同的类,即用两个不同的类加载器去加载这个类不同版本的 class 文件;因此,这个工作就不能由系统提供给我们的启动类加载器,扩原创 2021-01-16 11:10:55 · 475 阅读 · 0 评论 -
《深入理解 Java 虚拟机》阅读笔记2系列:基于栈的字节码解释执行引擎
基于栈的字节码解释执行引擎这个栈,就是栈帧中的操作数栈。解释执行先通过 javac 将代码编译成字节码,虚拟机再通过加载字节码文件,解释执行字节码文件生成机器码,解释执行的流程如下:词法分析 -> 语法分析 -> 形成抽象语法树 -> 遍历语法树生成线性字节码指令流指令集分类基于栈的指令集优点:可移植:寄存器由硬件直接提供,程序如果直接依赖这些硬件寄存器,会不可避免的受到硬件的约束;代码更紧凑:字节码中每个字节对应一条指令,多地址指令集中还需要存放参数;编译器实原创 2021-01-16 11:10:16 · 348 阅读 · 0 评论 -
《深入理解 Java 虚拟机》阅读笔记2系列:方法调用
方法调用Java 的方法的执行分为两个部分:方法调用:确定被调用的方法是哪一个;基于栈的解释执行:真正的执行方法的字节码。在本节中我们将对方法调用进行详细的讲解,我们知道,一切方法的调用在 Class 文件中存储的都是常量池中的符号引用,而不是方法实际运行时的入口地址(直接引用),直到类加载的时候,甚至是实际运行的时候才回去会去确定要被运行的方法的直接引用,而确定要被运行的方法的直接引用的过程就叫做方法调用。方法调用方法调用字节码指令解析调用分派调用静态分派(方法重载)变量原创 2021-01-16 11:09:40 · 458 阅读 · 0 评论 -
《深入理解 Java 虚拟机》阅读笔记2系列:虚拟机栈栈帧结构
虚拟机栈栈帧结构虚拟机栈栈帧结构局部变量表局部变量表的空间分配Slot 的复用操作数栈动态连接方法返回地址局部变量表存放方法参数和方法内部定义的局部变量;Java 程序编译为 class 文件时,就确定了每个方法需要分配的局部变量表的最大容量。最小单位:Slot;一个 Slot 中可以存放:boolean,byte,char,short,int,float,reference,returnAddress (少见);虚拟机可通过局部变量表中的 refe原创 2021-01-16 11:09:10 · 386 阅读 · 1 评论 -
《深入理解 Java 虚拟机》阅读笔记2系列:虚拟机的类加载机制
虚拟机的类加载机制虚拟机的类加载机制类加载的时机类的显式加载和隐式加载类加载的过程类的生命周期加载加载的 3 个阶段分类验证准备解析初始化类加载器如何判断两个类 “相等”类加载器的分类双亲委派模型类加载的时机JVM 会在程序第一次主动引用类的时候,加载该类,被动引用时并不会引发类加载的操作。也就是说,JVM 并不是在一开始就把一个程序就所有的类都加载到内存中,而是到不得不用的时候才把它加载进来,而且只加载一次。那么什么是主动引用,什么是被动原创 2021-01-16 11:08:39 · 221 阅读 · 0 评论 -
《深入理解 Java 虚拟机》阅读笔记2系列:Class文件的组成结构
Class 文件的组成结构Class 文件是一组以 8 位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在 Class 文件中,中间没有任何分隔符。Java 虚拟机规范规定 Class 文件采用一种类似 C 语言结构体的伪结构来存储数据,这种伪结构中只有两种数据类型:无符号数和表,我们之后也主要对这两种类型的数据类型进行解析。无符号数: 无符号数属于基本数据类型,以 u1、u2、u4、u8 分别代表 1 个字节、2 个字节、4 个字节和 8 个字节的无符号数,可以用它来描述数字、索引引用原创 2021-01-16 11:08:09 · 216 阅读 · 0 评论 -
《深入理解 Java 虚拟机》阅读笔记1系列:Java内存分配策略
Java 内存分配策略Java 内存分配策略优先在 Eden 区分配大对象直接进入老年代长期存活的对象将进入老年代空间分配担保新生代和老年代的 GC 操作新生代 GC 操作:Minor GC发生的非常频繁,速度较块。老年代 GC 操作:Full GC / Major GC经常伴随着至少一次的 Minor GC;速度一般比 Minor GC 慢上 10 倍以上。优先在 Eden 区分配Eden 空间不够将会触发一次 Minor GC;虚拟机参数原创 2021-01-16 11:07:37 · 395 阅读 · 0 评论 -
《深入理解 Java 虚拟机》阅读笔记1系列:垃圾收集(GC)
垃圾收集 (GC)垃圾收集(Garbage Collection,GC),它的任务是解决以下 3 件问题:哪些内存需要回收?什么时候回收?如何回收?其中第一个问题很好回答,在 Java 中,GC 主要发生在 Java 堆和方法区中,对于后两个问题,我们将在之后的内容中进行讨论,并介绍 HotSpot 的 7 个垃圾收集器。垃圾收集 (GC)判断对象的生死判断对象是否可用的算法引用计数算法可达性分析算法(主流)四种引用类型宣告对象死亡的两次标记过程方法区的回收原创 2021-01-16 11:06:56 · 225 阅读 · 0 评论 -
《深入理解 Java 虚拟机》阅读笔记1系列:Java内存区域详解
Java 内存区域详解Java 内存区域详解JVM 运行时的数据区域程序计数器Java 虚拟机栈本地方法栈Java 堆方法区直接内存HotSpot 虚拟机堆中的对象对象的创建(遇到一条 new 指令时)对象的内存布局对象的访问句柄访问直接指针访问JVM 运行时的数据区域首先获取一个直观的认识:总共也就这么 5 个区(直接内存不属于 JVM 运行时数据区的一部分),除了程序计数器其他的地方都有可能出现 OOM (OutOfMemoryErro原创 2021-01-16 11:06:08 · 401 阅读 · 0 评论 -
JVM春招面试复习系列:探秘HotSpot虚拟机对象
Java是面向对象的静态强类型语言,声明并创建对象的代码很常见,根据某个类声明一个引用变量指向被创建的对象,并使用此引用变量操作该对象在实例化对象的过程中,JVM中发生了什么呢?(1)下面从最简单的代码进行分析,利用javap -verbose- p命令查看对象创建的字节码● new : 如果找不到Class对象,则进行类加载加载成功后,则在堆中分配内存,从Object开始到本类路径上的所有属性值都要分配内存分配完毕之后,进行零值初始化在分配过程中,注意引用是占据存储空间的,它是一个变量,原创 2021-01-15 11:46:59 · 367 阅读 · 0 评论 -
JVM春招面试复习系列:探秘HotSpot虚拟机对象
Java是面向对象的静态强类型语言,声明并创建对象的代码很常见,根据某个类声明一个引用变量指向被创建的对象,并使用此引用变量操作该对象在实例化对象的过程中,JVM中发生了什么呢?(1)下面从最简单的代码进行分析,利用javap -verbose- p命令查看对象创建的字节码● new : 如果找不到Class对象,则进行类加载加载成功后,则在堆中分配内存,从Object开始到本类路径上的所有属性值都要分配内存分配完毕之后,进行零值初始化在分配过程中,注意引用是占据存储空间的,它是一个变量,原创 2021-01-15 11:45:08 · 310 阅读 · 0 评论