代码编织梦想

为什么阿里巴巴禁止使用 Executors 创建线程池?-爱代码爱编程

点击上方 Java旅途,选择 设为星标 优质文章,每日送达 阿里巴巴开发手册关于线程池有这样一条规定: 线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。 一、线程池原理 1.1 为什么使用线程池 池化技术的

Java类的加载机制-爱代码爱编程

Java的类加载机制 类的加载过程加载阶段(查找并加载类的二进制数据)验证阶段(确保被加载类的正确性)准备阶段(为类的静态变量分配内存,并将其初始化为默认值)解析阶段(把类中的符号引用转换为直接引用)初始化阶段(为类的静态变量赋予正确的初始值)使用阶段卸载阶段类加载器(JVM加载器)类加载方式JVM类加载机制 类的加载过程 类的加载过程分为:

ZGC垃圾回收器-爱代码爱编程

8.5.5. ZGC垃圾回收器 1)ZGC的介绍 ZGC垃圾回收器全称为Z Garbage Collector,是一个可伸缩的、低延迟、并发的垃圾收集器,主要为了满足如下目标进行设计: 1.停顿时间不会超过10ms 2.停顿时间不会随着堆的增大而增大(不管多大的堆都能保持在10ms以下) 3.可支持几百M,甚至几T的堆大小(最大支持4T)2)ZGC的停顿

秋招面试知识点----JVM篇-爱代码爱编程

1.发生栈内存溢出。 描述栈定义,再描述为什么会溢出,再说明一下相关配置参数,OK的话可以给面试官手写是一个栈溢出的demo。 栈定义存放基本类型的变量数据和对象的引用,栈是线程私有的,他的生命周期与线程相同。每个方法在执行的时候都会创建一个栈帧,用来存储局部变量表,操作数栈,动态链接,方法出口等信息。每个方法从调用直至执行完成的过程,就对应着一个栈帧

JVM-上篇-爱代码爱编程

JVM-上篇 1. 第一章-概述 1.1 JVM生命周期 启动 JVM启动是通过类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的。 执行 程序开始执行的时候JVM开始运行,程序结束时就停止。 执行一个Java程序时,真正执行的是JVM的进程。(注意:不是线程) 退出 如下几种情况

synchronized只会用不知道原理?一文搞定-爱代码爱编程

听说微信搜索《Java鱼仔》会变更强哦! 本文收录于JavaStarter,里面有我完整的Java系列文章,学习或面试都可以看看哦 (一)概述 在多线程的程序执行中,有可能会出现多个线程会同时访问一个共享并且可变资源的情况,这种时候由于线程的执行是不可控的,所以必须采用一些方式来控制该资源的访问,这种方式就是“加锁”。 我们把那些可能会

JVM虚拟机知识点-爱代码爱编程

JVM虚拟机知识点 JVM内存模型图 JVM结构(按照线程共享机制分类) 1.线程共享区域 方法区域 描述: 用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。所谓的方法区为永久代(Permanent Generation)的说法,仅仅是因为HotSpot虚拟机将GC分代收集扩展至方法区,或者说使用永久代来实

深度剖析!聊一聊JDK自带工具进行内存和CPU分析及垃圾回收-爱代码爱编程

操作步骤 1,运行本地程序做分析示例 2,运行jconsole.exe 3,对JVM使用内存,CPU的情况进行查看 4,对运行的程序发送数据,模拟数据处理 5,使用自带的工具,进行GC回收 1.运行程序 还是之前两篇文章里面的代码示例,将服务端程序运行起来,这里运行的程序,依然是rabbitMQ监听的消费者程序,大家也可以自己搭建一个springBo

JVM对象回收依据和垃圾回收算法-爱代码爱编程

文章目录 对象回收依据引用计数法可达性分析算法Java中的GC Roots对象对象的引用类型强引用软引用弱引用虚引用对象回收前的准备工作回收方法区方法区中常量的回收方法区中类型的回收垃圾收集算法分代收集理论标记-清除算法标记-复制算法标记-整理算法 对象回收依据 前面介绍的Java内存运行时区域的各个部分中,程序计数器、虚拟机栈、本地方法栈会

跳槽大厂必会的知识点,你还不看——java内存区域-爱代码爱编程

前言  在java的使用过程当中,我们会发现java的内存是自己释放的,并不像C、C++代码那样,每一块儿内存都需要程序员自己去维护,但是在如此便捷的同时可能也会出现很多问题,比如内存溢出,内存泄漏更不好排查了,所以今天的文章中,小白会带大家先了解**java的内存区域的到底是怎样的,以及各个组件的作用是什么,**让你一点一点翻越虚拟机内存管理这座大山。

JVM笔记9:对象的实例化内存布局与访问定位-爱代码爱编程

1、对象的实例化     美团:     对象在了VM中是怎么存储的?    对象头信息里面有哪些东西?    蚂蚁金服:     二面: java对象头里有什么 1.判断对象对应的类是否加载、链接、初始化 虚拟机遇到一条new指令,首先去检查这个指令的参数能否在Metaspace的常量池中定位到一个类的符号引用,并且检查这

面试官:何谓守护线程?简述守护线程创建流程?-爱代码爱编程

线程设置为守护线程的过程之源码分析 1 守护线程和用户线程的区别 1.1线程分为用户线程和守护线程,默认都是用户线程 1.2虚拟机必须确保用户线程执行完毕,但是不会等待守护线程执行完毕 1.3守护线程使用场景:操作日志 监控内存 垃圾回收 1.4当用户线程结束,守护线程也会跟着结束 2 守护线程是怎么创建的 2.1设置为守护线程的方法setD

JVM--类加载器以及双亲委派机制-爱代码爱编程

Java程序运行在JVM上。 JVM安装在操作系统之上,就相当于一个程序运行在操作系统上。 操作系统安装在硬件体系之上,操作系统也可以看成一个软件。 Java栈、本地方法栈、程序计数器是不可能有垃圾回收的 大部分的JVM调优在堆里 一部分在方法区内 类加载器的作用:加载Class文件 (类是抽象的 类的实例是具体的) 类加

真正的大师,永远怀着一颗学徒的心,掌握jvm垃圾回收你就真的能彻底搞懂Java性能调优了!-爱代码爱编程

真正的大师,永远怀着一颗学徒的心,掌握jvm垃圾回收你就真的能彻底搞懂Java性能调优了! 最新2020整理收集的一些面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring> cloud等详细讲解,也有详细的学习规划图,面试题整理等,我感觉在面试这块讲的非常清楚 :获取面试资料只需:点击这里领取!!!

JVM G1 源码分析和调优(回收算法)-爱代码爱编程

回收算法 垃圾回收算法引用计数法可达性分析法分代管理算法复制算法标记清除标记压缩 垃圾回收算法 垃圾回收算法实现分为复制、标记清除、标记压缩在回收方法上又可以分为串行回收、并行回收、并发回收内存管理可以分为非代管理和代管理引用计数法 引用计数法:在推内存中分配对象时,会为对象分配一段额外的空间,这个空间用于维护一个计数器,如果对象增加了一个

JVM G1 源码分析和调优(1)-爱代码爱编程

JVM G1 源码分析和调优 jvm常见术语 jvm常见术语 术语描述并行(parallelism)指两个或多个事件在同一时刻发生,在现代计算机中通常指多台处理器上同时处理多个任务并发(concurrency)指两个或多个事件在同一时间间隔发生ParNew并发收集器CMS并发标记清除JVM中的并行指多个垃圾回收相关线程在操作系统之上并发运行,

JVM/GC-爱代码爱编程

1、Java垃圾回收机制 在java中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在JVM中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫面那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。 2、JVM 的四种垃圾回收算法 标记-清除算法:

JVM 类加载器-爱代码爱编程

JVM 类加载器 类的生命周期 一个类从被加载到虚拟机内存开始,到卸载出内存为止,这个生命周期经历了七个阶段:加载、验证、准备、解析、初始化、使用、卸载。 加载(Loading):找 Class 文件 通过一个类的全限定名来获取定义此类的二进制字节流。 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。

Java-类加载器-爱代码爱编程

目录 1 类加载2 类加载过程2.1 类的初始化与主动使用和被动使用new一个对象过程中发生了什么?3 类加载器4 JVM预定义的三种类加载器4.1 启动类加载器(引导类加载器,Bootstrap ClassLoader)4.2 扩展类加载器(Extension ClassLoader)4.3 应用程序类加载器(系统类加载器,AppClassLoa

7. Java 基础:Object类 和 String类-爱代码爱编程

目录 一、Object 类1. 概述2. equals() 方法3. getClass() 方法4. hashCode() 方法5. finalize() 方法6. clone() 方法7. toString() 方法二、String 类1. 概述2. 构造方法3. String类的判断功能4. String类的获取功能 一、Object 类