自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(477)
  • 收藏
  • 关注

原创 【Java进阶营】Java虚拟机如何运行Java字节码?

一、Java的class文件的内容1.首先编写一个简单的代码public class StringDemo {public static void main(String[] args) { String s=new String("hello world"); System.out.println(s);}}2.运行程序编译成class文件,class文件的查看可以用Java class文件分析工具 – Classpy3.这种字节码文件我们肯定看不懂,所以我们可以通过指令

2022-04-30 15:57:30 407 1

原创 【Java进阶营】29个你必须学会的微服务面试问题(含答案解析)

这29个微服务面试题基本涵盖了方方面,希望对你有所帮助。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YvPsK1zg-1651230439289)(https://upload-images.jianshu.io/upload_images/16642395-9995edd3efee5530.png)]一、什么是Spring Cloud?在微服务中,SpringCloud是一个提供与外部系统集成的系统。它是一个敏捷的框架,可以短平快构建应用程序。与有限数量的数据处理相

2022-04-29 19:07:43 1305

原创 【Java进阶营】深入MyBatis源码,理解Java设计模式之适配器模式

什么是适配器模式定义:将一个系统的接口转换成另外一种形式,从而使原来不能直接调用的接口变得可以调用。适配器模式角色划分适配器模式涉及3个角色:1.源(Adaptee):需要被适配的对象或类型,相当于插头。2.适配器(Adapter):连接目标和源的中间对象,相当于插头转换器。3.目标(Target):期待得到的目标,相当于插座。适配器模式包括3种形式:类适配器模式、对象适配器模式、接口适配器模式(或又称作缺省适配器模式)。适配器模式应用场景1、新老版本接口的兼容2、Mybatis多种日志

2022-04-29 15:59:24 455

原创 【Java进阶营】设计模式之单件模式

有人说单件模式是最简单的模式,因为它只有一个类,但其实它还有一些值得注意的地方,就如:出现并发性时,单件可能已经不是单件了。先说一下,我们为什么要用到单件模式,当我们用到这些对象如:线程池,缓存,注册表和日志对象等,事实上,这些对象我们只能有一个实例,不然会导致很多问题出现,所以我们要将它弄成单件的。可能你会说利用程序员之间的约定或是利用全局变量就可以做到啊,如:java的静态变量。是的,但全局变量有一个缺点,就是它必须在程序一开始就要创建好,万一这个对象非常耗费资源,而程序又一直没用到它,那不是很浪

2022-04-29 15:58:24 167

原创 【Java进阶营】10分钟掌握你应该知道的最佳Java框架

Java被证明是一种主要的编程语言,这就是它成为开创性软件开发工作的首选语言的原因。在开始一个新项目的开发时,很多人总是问自己“应该使用哪些java框架?”。Java框架是能够为您的ode添加额外功能以使事情看起来更舒适的软件工具。我们已经对此进行了研究,并提出了最好的Java框架,因此您可以决定哪个最适合您。在本文中,我们将研究以下Java框架的特性、优势和应用。SpringHibernateStrutsWicketGWTDropwizardPlayVaadinBladeGrails1.Spri

2022-04-27 18:36:49 172

原创 【Java进阶营】java工程师常用的java框架Shiro

Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权。Shiro在JavaSE和JavaEE项目中都可以使用。它主要用来处理身份认证,授权,企业会话管理和加密等。Shiro的具体功能点如下:(1)身份认证/登录,验证用户是不是拥有相应的身份;(2)授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;(3)会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有

2022-04-27 18:32:51 193

原创 【Java进阶营】面试官:Java中的Lock锁底层AQS到底是如何实现的?

相信大家对Java中的Lock锁应该不会陌生,比如ReentrantLock,锁主要是用来解决解决多线程运行访问共享资源时的线程安全问题。那你是不是很好奇,这些Lock锁api是如何实现的呢?本文就是来探讨一下这些Lock锁底层的AQS(AbstractQueuedSynchronizer)到底是如何实现的。本文是基于ReentrantLock来讲解,ReentrantLock加锁只是对AQS的api的调用,底层的锁的状态(state)和其他线程等待(Node双向链表)的过程其实是由AQS来维护的加锁

2022-04-26 19:36:51 125

原创 【Java进阶营】面试官:分布式锁用Redis好?还是Zookeeper好?

提到锁大家肯定有了解,像 Synchronized、ReentrantLock,在单进程情况下,多个线程访问同一资源,可以用它们来保证线程的安全性。不过目前互联网项目越来越多的项目采用集群部署,也就是分布式情况,这两种锁就有些不够用了。来两张图举例说明下,本地锁的情况下:分布式锁情况下:就其思想来说,就是一种“我全都要”的思想,所有服务都到一个统一的地方来取锁,只有取到锁的才能继续执行下去。说完思想,下面来说一下具体的实现。Redis 实现为实现分布式锁,在 Redis 中存在 SET

2022-04-26 19:31:15 121

原创 【Java进阶营】设计模式-创建模式-工厂模式

从这一块开始,我们详细介绍 Java 中 23 种设计模式的概念,应用场景等情况,并结合他们 的特点及设计模式的原则进行分析。 首先,简单工厂模式不属于 23 中涉及模式,简单工厂一般分为:普通简单工厂、多方法简单 工厂、静态方法简单工厂。简单工厂模式 简单工厂模式模式分为三种:普通就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。首先看下关系图:举例如下:(我们举一个发送邮件和短信的例子)首先,创建二者的共同接口:public interface Se...

2022-04-25 19:10:29 138

原创 【Java进阶营】设计模式-创建模式-单例模式

[1.故事的起因;] 最近在看一个项目的源代码时发现一些单例是用的双重检查的懒汉模式来实现的. 但是对于java语言来说双重检查其实是个伪代码. 可能大伙都知道对于java1.5以后对于这类问题的修正可以使用volatile解决, 那么DCL存在问题的原因是什么? 为什么volatile关键字可以解决这个问题? 我看了几篇相关的博客和文章, 感觉没有直击痛点. 所以在这里简单地说一下自己的看法. 有不对的地方希望各位大神不吝赐教.[2.知识点准备.] 对于DCL的剖析需要大家对于多线程中

2022-04-25 19:09:43 87

原创 【Java进阶营】【并发编程技术】线程池监控技术分析操作

假如现在有好几个业务子系统共同完成一个任务,当大量的任务来临时,怎么去保证每个任务都能跑完?这就需要我们对任务进行监控,我的思路是这样的:创建一个新的监控项目,定时遍历数据库的任务表,看看有没有新来的任务,有的话取出来,加入一个待执行队列,并计算超时时间,再开一个线程去判断该任务是否跑完,若超时了,则触发重发机制,若跑完了,则关闭线程。这里有三个问题要特别注意监控线程不得对原有业务造成侵入,必须是额外的。一定要保证监控到每个任务,可以统一线程监控全部,也可以每个任务开一个线程。超时时间的计算(由于

2022-04-25 19:08:24 117

原创 【Java进阶营】Spring基本概念-Spring框架的总体介绍

1.Spring简介1.1 Spring官网介绍Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache License 2.0开源许可协议的形式发布,也有.NET平台上的移植版本。该框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一书中的代码,最初由Rod Johnson和Juergen Hoeller等开发。Spring Fra

2022-04-25 19:07:36 412

原创 【Java进阶营】高性能的“NIO”框架——netty

[前言]细心的读者可能观察到,我在标题中关于"NIO"的词汇,加了双引号,在小学的时候啊,语文老师经常跟我们说,这里加双引号是什么什么作用,那我这边加双引号是要表示什么意思呢?哈哈哈,原谅我卖关子了,马上为大家带来我的看法,在netty中,很多资料其实都是说这是一个高性能的 NIO 框架(事实上也没错),我看了 netty 的源码,发现里面还包含了关于 OIO 的封装,但是 OIO 在新版本中的方法都是过时的了。当然,为了不混淆大家原本对 netty 的理解,这里还是把它当成 NIO 框架来讲,此处说了这

2022-04-25 19:06:50 1311 1

原创 【Java进阶营】Java技术专题-教你如何使用【精巧好用】的DelayQueue(延时队列)

延时队列前提定时关闭空闲连接:服务器中,有很多客户端的连接,空闲一段时间之后需要关闭之。定时清除额外缓存:缓存中的对象,超过了空闲时间,需要从缓存中移出。实现任务超时处理:在网络协议滑动窗口请求应答式交互时,处理超时未响应的请求。应用在session超时管理:网络应答通讯协议的请求超时处理。痛点方案机制一种比较暴力的办法就是,使用一个后台线程,遍历所有对象,挨个检查。这种笨笨的办法简单好用,但是对象数量过多时,可能存在性能问题,检查间隔时间不好设置,间隔时间过大,影响精确度,多小则存在效率问题

2022-04-25 17:37:41 224

原创 【Java进阶营】「终」虚拟机研究系列-面向CMS垃圾回收器的性能优化实战

学习背景关于CMS GC介绍和调优的文章比较多,但大多没有经过验证。因为CMS目前在Java9之前还是相对用的较多(G1也需要持续去调研),所以这里把CMS的一些重要知识和调优经验总结一下。相关jvm源代码版本为/openjdk-8-src-b132-03_mar_2014/openjdk/hotspot/src/share/vm,个人建议还是选择openjdk7比较好,因为是行业标准!除了OpenJDK的源代码和R大以外,什么都不要轻易相信。CMS的一些重要知识点使用CMS GC

2022-04-23 20:28:50 391

原创 【Java进阶营】Java技术专题-线程Interrupt实现机制和原理分析

内容介绍interrupt()方法和InterruptException异常,是java专门用来处理线程阻塞的。线程阻塞,就表示要等待一段时间。如果需要等待的时间比较长,正常还没结束之前想中断某个线程的阻塞状态怎么办?这就是靠interrupt()方法来解决了。如果因为一些特殊的原因,想提前中断一些阻塞的线程,以让他们提前解除阻塞状态,然后继续执行下去。只需要在其他线程调用指定线程的interrupt()方法即可(interrupt()方法是线程实例方法),这时候原来阻塞的对应的线程

2022-04-23 20:27:47 245

原创 【Java进阶营】虚拟机研究系列-Java各种类型对象占用内存情况分析(中)

前提介绍所有包含Heap Profling功能的工具(MAT, Yourkit, JProfiler, TPTP等)都会使用到两个名词,一个是Shallow Size,另一个是 Retained Size.这是两个在平时不太常见的名词,本文会对这两个名词做一个详细的解释。Shallow Size对象自身占用的内存大小,不包括它引用的对象。针对非数组类型的对象,它的大小就是对象对象与它所有的成员变量大小(引用)的总和。当然这里面还会包括一些java语言特性的数据存储单元。针对数组类

2022-04-23 20:27:04 155

原创 【Java进阶营】虚拟机研究系列-Java各种类型对象占用内存情况分析(下)

前提回顾建议大家从[【Java技术专题-JVM研究系列(39)Java各种类型对象占用内存情况分析(上)】]开始学习比较好,这样子会有一个承接和过度。根据前面的学习的内存占用计算规则,可以计算出一个对象在内存中的占用空间大小情况,下面举例分析下Java中的Enum, ArrayList及HashMap的内存占用情况,读者可以仿照分析计算过程来计算其他数据结构的内存占用情况。注: 下面的分析计算基于HotSpot Jvm, JDK1.8, 64位机器,开启指针压缩。。对象头这里只关注其内存占用

2022-04-23 20:26:33 375

原创 【Java进阶营】虚拟机研究系列-Java各种类型对象占用内存情况分析(上)

内容简介本文深入分析并验证了不同Java对象占用内存空间大小的情况。对于不同的jvm实现,Java对象占用的内存空间大小可能不尽相同,本文主要分析HotSpot jvm中的情况,实验环境为64位window10系统、JDK1.8。对象头在64位机器上,默认不开启指针压缩(-XX:-UseCompressedOops)的情况下,对象头占用16bytes,开启指针压缩(-XX:+UseCompressedOops)则占用12bytes。实例数据原生类型(primitive type)的内存占用

2022-04-23 20:25:46 427

原创 【Java进阶营】Java基础知识分享

环境并非所有的计算机都可以开发java程序,java程序的开发与运行需要专门的环境。因为java语言的程序是运行在java所专有的系统中。要运行java程序我们需要在操作系统(windows,MACOS,Linux)安装jre(Java Runtime Environment,简称JRE)。要编译(开发)java程序,我们就需要安装JDK(Java Development Kit)。jre和JDK都是一个软件,jre这个软件可以运行java编译后的程序。JDK中包含了JRE,JDK中不

2022-04-23 18:03:46 368

原创 【Java进阶营】Springcloud是什么?核心总结

Spring Cloud 是一套 完整的微服务解决方案 ,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来,从而简化了开发者的代码量。Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性简化了分布式系统的开发,比如服务发现、服务网关、服务路由、链路追踪等。Spring Cloud 并不重复造轮子,而是将市面上开发得比较好的模块集成进去,进行封装,从而减少了各模块的开发成本。换句.

2022-04-23 17:59:19 99

原创 【Java进阶营】JVM调优(CMS+PerNew垃圾回收)

0.问题及排查思路0.1 线上故障线上服务器服务进程假死,进程还存在,但是日志已经不打印了,访问失败超时不响应。0.2 排查思路0.2.1 使用 jps -l 查看java进程的进程号 假设进程号为9999[root@izbp1bym5hklu4zctqz logs]$ jps -l24611 com.alibaba.dubbo.container.Main11015 sun.tools.jps.Jps15113 com.alibaba.dubbo.container.Main9999 com..

2022-04-23 17:56:57 296

原创 【Java进阶营】Alibaba面试十道必会,Java经典的Main方法面试题

1.main 方法是做什么用的?main 方法是 Java 程序的入口方法,JVM 在运行的时候会首先查找 main 方法。2.不用 main 方法如何运行一个类?不行,没有 main 方法我们不能运行 Java 类。 在 Java 7 之前,你可以通过使用静态初始化运行 Java 类。但是,从 Java 7 开始就行不通了。3.main 方法如何传递参数?传递参数的类型是什么?能不能改变该参数类型? String 数组,不能改变。4.main 方法为什么是静态的?能不能改为非静态? main.

2022-04-23 17:54:58 84

原创 【Java进阶营】Java必学的Spring5学习大总结

一、了解 Spring 基本介绍、主要思想 IoC/DI1、了解 Spring 基本介绍(1) Spring是什么?Spring 是一个轻量级的DI/IoC 和 AOP 容器的开源框架,致力于构建致力于构建轻量级的 JavaEE 应用,简化应用开发,本身涵盖了传统应用开发,还拓展到移动端,大数据等领域。(2) Spring有什么优点?与作用?① Spring 能帮我们低侵入/低耦合地根据配置文件创建及组装对象之间的依赖关系。② Spring面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安

2022-04-23 17:53:45 182

原创 【Java进阶营】java开发之内存模型面试分享

面试官:今天想跟你聊聊Java内存模型,这块你了解过吗?候选者:嗯,我简单说下我的理解吧。那我就从为什么要有Java内存模型开始讲起吧面试官:开始你的表演吧。候选者:那我先说下背景吧候选者:1. 现有计算机往往是多核的,每个核心下会有高速缓存。高速缓存的诞生是由于「CPU与内存(主存)的速度存在差异」,L1和L2缓存一般是「每个核心独占」一份的。候选者:2. 为了让CPU提高运算效率,处理器可能会对输入的代码进行「乱序执行」,也就是所谓的「指令重排序」候选者:3. 一次对数值的修改操作往往是非原

2022-04-22 19:47:08 66

原创 【Java进阶营】高频面试题八股文分享

Java的特点**Java是一门面向对象的编程语言。**面向对象和面向过程的区别参考第三道题。Java具有平台独立性和移植性。Java有一句口号:Write once, run anywhere,一次编写、到处运行。这也是Java的魅力所在。而实现这种特性的正是Java虚拟机JVM。已编译的Java程序可以在任何带有JVM的平台上运行。你可以在windows平台编写代码,然后拿到linux上运行。只要你在编写完代码后,将代码编译成.class文件,再把class文件打成Java包,这个jar包就可以

2022-04-22 19:43:02 111

原创 金三银四|求职Java多线程面试问题

多线程是Java技术面试中面试官比较喜欢问的问题之一。在这里,从学生面试的角度列出了大部分重要的问题,但是作为一个程序员仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题。1. 进程和线程之间有什么不同?一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了不同的类和程序的单一进程。线程可以被称为轻量级进程。线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源。2. 多线程编程

2022-04-21 17:51:03 69

原创 Java面试攻略——JVM

1.1JVM的运行机制JVM是运行Java字节码的虚拟机,包括一套字节码指令集,一组程序寄存器,一个虚拟机栈,一个虚拟机堆,一个方法区和一个垃圾回收器。JVM运行在操作系统上,不与硬件设备直接交互  Java源文件在通过编译器之后被编译成相应的.Class文件(字节码文件),.Class文件又被JVM中的解释器编译成机器码在不同的操作系统上运行(Windows,Linux,Mac)上运行。每种操作系统的解释器都是不同的,但基于解释器实现的虚拟机是相同的,这也是Java能够跨平台的原因。在一个Java进.

2022-04-21 17:50:33 101

原创 JAVA面试题总览--JVM知识

1. 什么情况下会发生栈内存溢出。a.方法创建了一个很大的对象,如List,Array b.是否产生了循环调用、死循环 c.是否引用了较大的全局变量 ==================================================================2. JVM的内存结构,Eden和Survivor比例。JVM内存结构分为两种类型:线程安全:虚拟机栈、本地方法栈、程序计数器非线程安全:堆,方法区虚拟机栈:每个方法被执行时,都会在

2022-04-21 17:50:09 72

原创 Java框架常见面试题-Spring

1.什么是springSpring是一个开源的轻量级的IOC和AOP容器框架。Spring框架的核心功能可以应用在任何Java应用程序中,但对Java EE平台上的Web应用程序有更好的扩展性。spring优点1)spring属于低侵入式设计,代码的污染极低;2)spring的DI机制将对象的创建和依赖关系交由框架处理,减低组件的耦合性;3)Spring提供了AOP技术,支持将一些通用任务,如事务、日志进行集中式管理,从而提供更好的复用。4)spring对于主流的应用框架提供了集成支持。主要组

2022-04-21 17:49:17 89

原创 【Java进阶营】Java架构师面试必问:Elasticsearch面试题总结

1.为什么要使用Elasticsearch?当我们在商城中使用搜索功能时,随着后期项目数据量的不断增大,如果我们继续使用以前数据库模糊查询的方式去查询数据,在百万数据量的情况下,效率非常低下;而Es是一种支持全文检索的框架,特点是可以实时存储和实时分析搜索引擎,并且当我们数据量很大的时候可以集群,所以我们使用搜索功能时,可以把商品常用的名称,价格,描述,id等信息存储到索引库中,查询的时候可以提高查询速度。2.elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少

2022-04-21 17:48:46 143

原创 阿里架构精心整理出来一份(Nginx实战.pdf)资料,请签收

前言Nginx 很火,因为它就像一个万能药,在任何存在性能需求的场合总能找见它的身影,它可以轻松在百万并发连接下实现高吞吐量的 Web 服务。同时,类似于 OpenResty 和 Tengine 这样的第三方模块群,进一步发展出了新生态,使 Nginx 的应用进一步向应用防火墙、CDN 等领域扩展。目录第 1 章 Nginx 简介基本介绍第 2 章 Nginx 服务器的安装与配置 11第 3 章 Nginx 的基本配置与优化 21第 4 章 Nginx 与 PHP(FastCGI)的安装、

2022-04-20 19:04:13 758 1

原创 【Java进阶营】Java架构师面试必问:Elasticsearch面试题总结

1.为什么要使用Elasticsearch?当我们在商城中使用搜索功能时,随着后期项目数据量的不断增大,如果我们继续使用以前数据库模糊查询的方式去查询数据,在百万数据量的情况下,效率非常低下;而Es是一种支持全文检索的框架,特点是可以实时存储和实时分析搜索引擎,并且当我们数据量很大的时候可以集群,所以我们使用搜索功能时,可以把商品常用的名称,价格,描述,id等信息存储到索引库中,查询的时候可以提高查询速度。2.elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少

2022-04-19 17:58:13 260

原创 Java框架常见面试题-Spring

1.什么是springSpring是一个开源的轻量级的IOC和AOP容器框架。Spring框架的核心功能可以应用在任何Java应用程序中,但对Java EE平台上的Web应用程序有更好的扩展性。spring优点1)spring属于低侵入式设计,代码的污染极低;2)spring的DI机制将对象的创建和依赖关系交由框架处理,减低组件的耦合性;3)Spring提供了AOP技术,支持将一些通用任务,如事务、日志进行集中式管理,从而提供更好的复用。4)spring对于主流的应用框架提供了集成支持。主要组

2022-04-19 17:56:31 247

原创 Java程序员的Spring学习指南

前言Spring 框架早已成为 Java 后端开发事实上的行业标准,如何用好 Spring ,也就成为 Java 程序员的必修课之一。同时,Spring Boot 和 Spring Cloud 的出现,可以帮助工程师更好地基于 Spring 框架及各种基础设施来快速搭建系统,可以说,它们的诞生又一次解放了大家的生产力。所以,Spring Boot 和 Spring Cloud 已成为 Spring 生态中不可或缺的一环。想成为一名合格的 Java 后端工程师,Spring Framework、Spri

2022-04-18 17:04:30 160

原创 大厂面试必问的4大框架源码:SSM+SpringBoot,你真会么?

对于开发来说,我们在工作中普遍都会用到各个开源框架,比如最基础的 Spring,使开发网络编程变得特别简单的 Netty 框架,还有成为目前微服务框架首选的 Spring Cloud 等。在多个框架之上,我们仅需使用几行代码,即可实现业务需要的复杂功能,大大减少了工作量。也正因如此,不少人只会用框架,看不懂源码,不了解其底层机制与实现原理,成了一名只会搬运源码库的开发。说白了,就是真正牛逼的技术不属于你。可了解框架中的很多知识和代码,对解决开发中的类似问题是极其有帮助的。因为它们是经过时间验证和优化过的

2022-04-18 17:02:52 221

原创 金三银四|求职Java多线程面试问题

多线程是Java技术面试中面试官比较喜欢问的问题之一。在这里,从学生面试的角度列出了大部分重要的问题,但是作为一个程序员仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题。1. 进程和线程之间有什么不同?一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了不同的类和程序的单一进程。线程可以被称为轻量级进程。线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源。2. 多线程编程

2022-04-16 20:04:50 95

原创 Java面试攻略——JVM

1.1JVM的运行机制JVM是运行Java字节码的虚拟机,包括一套字节码指令集,一组程序寄存器,一个虚拟机栈,一个虚拟机堆,一个方法区和一个垃圾回收器。JVM运行在操作系统上,不与硬件设备直接交互  Java源文件在通过编译器之后被编译成相应的.Class文件(字节码文件),.Class文件又被JVM中的解释器编译成机器码在不同的操作系统上运行(Windows,Linux,Mac)上运行。每种操作系统的解释器都是不同的,但基于解释器实现的虚拟机是相同的,这也是Java能够跨平台的原因。在一个Java进.

2022-04-16 20:04:19 158

原创 JAVA面试题总览--JVM知识

1. 什么情况下会发生栈内存溢出。a.方法创建了一个很大的对象,如List,Arrayb.是否产生了循环调用、死循环c.是否引用了较大的全局变量2. JVM的内存结构,Eden和Survivor比例。JVM内存结构分为两种类型:线程安全:虚拟机栈、本地方法栈、程序计数器非线程安全:堆,方法区虚拟机栈:每个方法被执行时,都会在内存中创建一个空间用来存储方法中的局部变量,方法的出入口等信息。本地方法栈:每个本地方法被执行时,都会创建一个内存空间,用来存储本地方法中的局部变量,方法的出入口等信息

2022-04-16 20:03:48 96

原创 「Java面试宝典」收藏过万的Java面试之JVM汇总 学会了,学废了

前言作为 Java 的从业者,在找工作的时候,一定会被问及关于 JVM 相关的知识。 JVM 知识的掌握程度,在很多面试官眼里是候选人技术深度的一个重要评判标准。而大多数人可能没有对 JVM 的实际开发和使用经验,接下来这一系列文章将带你深入了解 JVM 需要掌握的各个知识点。这也将帮助你完成从初级程序员到高级程序员的转变。今天分享一份平时学习整理的Java程序员必备的JVM学习文档,这份文档不管是懂得JVM的开发者和刚刚学习的朋友都是一份非常不错的内容,同时也是面试复习的精选文档!还准备了一份目前互.

2022-04-16 20:03:06 63

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除