Sweep

Java 面试知识点解析(三)——JVM篇

你离开我真会死。 提交于 2020-11-04 02:37:35
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文: 知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大部分内容参照自这一篇文章,有一些自己补充的,也算是重新学习一下 Java 吧。 前序文章链接: Java 面试知识点解析(一)——基础知识篇 Java 面试知识点解析(二)——高并发编程篇 (一)JVM 基础知识 问题和答案都是自行整理的,所以仅供参考!欢迎指正! 1)Java 是如何实现跨平台的? 注意:跨平台的是 Java 程序,而不是 JVM。JVM 是用 C/C++ 开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的 JVM 答:我们编写的 Java 源码,编译后会生成一种 .class 文件,称为字节码文件。Java 虚拟机(JVM)就是负责将字节码文件翻译成特定平台下的机器码然后运行,也就是说,只要在不同平台上安装对应的 JVM,就可以运行字节码文件,运行我们编写的 Java 程序。 而这个过程,我们编写的 Java 程序没有做任何改变,仅仅是通过 JVM 这一 “中间层” ,就能在不同平台上运行,真正实现了 “一次编译,到处运行” 的目的。 2)什么是 JVM ? 解析:不仅仅是基本概念,还有 JVM 的作用。 答:JVM,即 Java Virtual

30道 有趣的 的 JVM 面试题

百般思念 提交于 2020-11-03 09:06:00
[toc] 前段时间在忙大数据,也对市场技术有了一个新的理解,学到老,学到老嘛。今天来和大家分享一下JVM常见的面试题,今天来和大家分享一下。大多都是大厂的实战面试题,来和小刘看一下吧! 1、JVN内存结构 方法区和对是所有线程共享的内存区域;而java栈、本地方法栈和程序员计数器是运行是线程私有的内存区域。 Java堆(Heap),是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。 方法区(Method Area),方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。 程序计数器(Program Counter Register),程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。 JVM栈(JVM Stacks),与程序计数器一样,Java虚拟机栈(Java Virtual Machine Stacks)也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame

Java GC

柔情痞子 提交于 2020-10-30 08:02:38
1. Java堆内存结构 Java将堆内存分为3大部分:新生代、老年代和永久代,其中新生代又进一步划分为Eden、S0、S1(Survivor)三个区。结构如下图所示: 1. Java堆内存结构 Java将堆内存分为3大部分:新生代、老年代和永久代,其中新生代又进一步划分为Eden、S0、S1(Survivor)三个区。结构如下图所示: 程序中new出来的对象会在新生代里的Eden区里面分配空间,如果存活时间足够长将会进入Survivor区,进而如果存活时间再长,还会被提升分配到老年代里面。持久代里面存放的是Class类元数据、方法描述等。 1.S0和S1是两个大小相等的区域,分配内存空间只会在其中某一个进行,另外一个空间是用来辅助进行新生代进行垃圾回收的,因为新生代的垃圾回收策略基于复制算法,其思想是将Eden区及两个Survivor中的某个区,如S0区里面需要存活的对象复制到另外一个空的Survivor区,如S1区,然后就可以回收Eden和S0区域里面的死亡对象。下一次回收就对调S0和S1两个区的角色,S1用来存放存活对象而S0用来辅助回收垃圾,如此循环利用。 2.有些文章并不将永久代纳入Java堆内存。其实永久代就是我们所说的方法区,而方法区经常被称为Non-Heap(非堆)。仅仅在HotSpot虚拟机的实现中才将GC分代收集扩展至方法区,或者说使用永久代来实现方法区

JVM 内存了解

点点圈 提交于 2020-10-29 08:39:40
说说JVM的内存布局? Java虚拟机主要包含几个区域: 堆:堆Java虚拟机中最大的一块内存,是线程共享的内存区域,基本上所有的对象实例数组都是在堆上分配空间。堆区细分为Yound区年轻代和Old区老年代,其中年轻代又分为Eden、S0、S1 3个部分,他们默认的比例是8:1:1的大小。 栈:栈是线程私有的内存区域,每个方法执行的时候都会在栈创建一个栈帧,方法的调用过程就对应着栈的入栈和出栈的过程。每个栈帧的结构又包含局部变量表、操作数栈、动态连接、方法返回地址。 局部变量表用于存储方法参数和局部变量。当第一个方法被调用的时候,他的参数会被传递至从0开始的连续的局部变量表中。 操作数栈用于一些字节码指令从局部变量表中传递至操作数栈,也用来准备方法调用的参数以及接收方法返回结果。 动态连接用于将符号引用表示的方法转换为实际方法的直接引用。 元数据:在Java1.7之前,包含方法区的概念,常量池就存在于方法区(永久代)中,而方法区本身是一个逻辑上的概念,在1.7之后则是把常量池移到了堆内,1.8之后移出了永久代的概念(方法区的概念仍然保留),实现方式则是现在的元数据。它包含类的元信息和运行时常量池。 Class文件就是类和接口的定义信息。 运行时常量池就是类和接口的常量池运行时的表现形式。 本地方法栈:主要用于执行本地native方法的区域 程序计数器:也是线程私有的区域

一个妹子网易Java岗社招面试经历分享

北城余情 提交于 2020-10-22 14:09:24
网易面试题 1. 面向对象的特点有哪些? 2. 列举几个java常用的package及其作用 3. 接口和抽象类有什么联系和区别 4. 重载和重写有什么区别 5. java有哪些基本数据类型? 6. Java支持的数据类型有哪些?什么是自动拆装箱? 7. int 和 Integer 有什么区别 8. 数组有没有length()方法?String有没有length()方法? 9. Java中符号>>和>>>有什么区别? 10. Java类的实例化顺序 11. 什么是值传递和引用传递 (1)值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量. (2)引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身 。 12. String能被继承吗?为什么? 13. String和StringBuilder、StringBuffer的区别? 14. Java集合框架的基础接口有哪些? 15. Java集合框架是什么?说出一些集合框架的优点? (1)每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中

Java 面试知识点解析(三)——JVM篇

让人想犯罪 __ 提交于 2020-10-14 19:40:31
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文: 知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大部分内容参照自这一篇文章,有一些自己补充的,也算是重新学习一下 Java 吧。 前序文章链接: Java 面试知识点解析(一)——基础知识篇 Java 面试知识点解析(二)——高并发编程篇 (一)JVM 基础知识 问题和答案都是自行整理的,所以仅供参考!欢迎指正! 1)Java 是如何实现跨平台的? 注意:跨平台的是 Java 程序,而不是 JVM。JVM 是用 C/C++ 开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的 JVM 答:我们编写的 Java 源码,编译后会生成一种 .class 文件,称为字节码文件。Java 虚拟机(JVM)就是负责将字节码文件翻译成特定平台下的机器码然后运行,也就是说,只要在不同平台上安装对应的 JVM,就可以运行字节码文件,运行我们编写的 Java 程序。 而这个过程,我们编写的 Java 程序没有做任何改变,仅仅是通过 JVM 这一 “中间层” ,就能在不同平台上运行,真正实现了 “一次编译,到处运行” 的目的。 2)什么是 JVM ? 解析:不仅仅是基本概念,还有 JVM 的作用。 答:JVM,即 Java Virtual

CCNP(BCMSN)实验:配置VRRP协议

社会主义新天地 提交于 2020-10-14 00:37:18
预配置:略 实验过程 第一步:在R1上进行配置 R1#debug vrrp all VRRP debugging is on R1# R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#int f0/0 R1(config-if)#vrrp 1 ip 192.168.0.100 R1#sh vrrp brief Interface Grp Pri Time Own Pre State Master addr Group addr Fa0/0 1 100 3609 Y Master 192.168.0.1 192.168.0.100 IP packet debugging is on R1# *Dec 13 21:14:31.507: IP: s=192.168.0.1 (local), d=224.0.0.18 (FastEthernet0/0), len 40, sending broad/multicast //1 s一次 第二步:在R2上配置vrrp R2(config)#int f0/0 R2(config-if)#vrrp 1 ip 192.168.0.100 R2#sh vrrp FastEthernet0/0 - Group 1 State is

JavaScript闭包(1):闭包的形成机制梳理

☆樱花仙子☆ 提交于 2020-10-06 03:13:48
JavaScript闭包的形成机制梳理 闭包前置知识:作用域,作用域链,变量生命周期 1.当我们调用函数的时候,js引擎为我们做了什么? 1.1举例说明 1.2 可能会引起的一些误解 2.JavaScript的垃圾回收机制——标记清除机制(`mark-and-sweep`) 3.闭包(`Closure`)的形成——赋予本该销毁的活动对象以全局可达性 3.1举例说明 3.2闭包(`Closure`)的本质 闭包前置知识:作用域,作用域链,变量生命周期 从我自学前端以来,就有无数的人告诉我,闭包几乎是JavaScript中最重要的几个技术点之一,必须把把闭包掌握,才算是踏入JavaScript的大门。现在,让我们一起揭开闭包的神秘面纱,看看这到底是个什么机制。 在学习闭包前,我们需要对JavaScript的变量生命周期,作用域,作用域链等有一定的认识,最好对函数的执行过程也有一定的了解,虽然自认为学得一般,但我还是在学习的过程中进行了总结,并发布了两篇相关博客: JavaScript 作用域 作用域链 变量的生命周期 JavaScript预编译——谁说js代码是由上到下一行一行执行的? 1.当我们调用函数的时候,js引擎为我们做了什么? 首先我们需要知道,在JavaScript中,当某个函数被调用时,引擎会做一些前置准备: 会创建一个执行环境( execution context )

超值干货 | 值得收藏:精选BATJ面试突击500题详解:JVM篇!

笑着哭i 提交于 2020-10-02 15:24:30
JVM Java内存区域 说一下 JVM 的主要组成部分及其作用? 说一下 JVM 运行时数据区 深拷贝和浅拷贝 说一下堆栈的区别? 队列和栈是什么?有什么区别? HotSpot虚拟机对象探秘 对象的创建 为对象分配内存 处理并发安全问题 对象的访问定位 句柄访问 直接指针 内存溢出异常 Java会存在内存泄漏吗?请简单描述 垃圾收集器 简述Java垃圾回收机制 GC是什么?为什么要GC 垃圾回收的优点和原理。并考虑2种回收机制 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? Java 中都有哪些引用类型? 怎么判断对象是否可以被回收? 在Java中,对象什么时候可以被垃圾回收 JVM中的永久代中会发生垃圾回收吗 说一下 JVM 有哪些垃圾回收算法? 标记-清除算法 复制算法 标记-整理算法 分代收集算法 说一下 JVM 有哪些垃圾回收器? 详细介绍一下 CMS 垃圾回收器? 新生代垃圾回收器和老年代垃圾回收器都有哪些?有什么区别? 简述分代垃圾回收器是怎么工作的? 内存分配策略 简述java内存分配与回收策率以及Minor GC和Major GC 对象优先在 Eden 区分配 大对象直接进入老年代 长期存活对象将进入老年代 虚拟机类加载机制 简述java类加载机制? 描述一下JVM加载Class文件的原理机制 什么是类加载器

【JVM系列5】深入分析Java垃圾收集算法和常用垃圾收集器

别说谁变了你拦得住时间么 提交于 2020-09-30 01:46:40
深入分析Java垃圾收集算法和垃圾收集器 前言 如何确定无效对象 引用计数法(Reference Counting) 可达性分析算法(Reachability Analysis) GC Root 引用的分类 强引用(Strong Reference) 软引用(Soft Reference) 弱引用(Weak Reference) 虚引用(Phantom Reference) 垃圾收集算法 标记-清除(Mark-Sweep)算法 标记-清除算法的缺点 复制(Copying)算法 复制算法的缺点 复制算法在Java虚拟机的落地形式 标记-整理(Mark-Compact)算法 分代收集算法(Generational Collection) 垃圾收集器 Serial和Serial Old收集器 ParNew收集器 Parallel Scavenge收集器 Paralled Old收集器 CMS(Concurrent Mark Sweep)收集器 CMS优缺点 Floating Garbage(浮动垃圾) Concurrent Mode Failure(并发模式失败) G1(Garbage-First)收集器 G1特点 G1工作流程 G1应用场景 其他收集器 如何选择垃圾回收器 总结 前言 上一篇 我们介绍了对象在堆内的内存布局已经占用空间的大小,同时分析了堆内可以分为Young区和Old区