JVM
文章平均质量分 90
Bolon0708
昨日已成过往,明日未来可期。
展开
-
《我想进大厂》之JVM夺命连环10问
这是面试专题系列第五篇JVM篇。这一篇可能稍微比较长,没有耐心的同学建议直接拖到最后。说说JVM的内存布局?Java虚拟机主要包含几个区域:堆:堆Java虚拟机中最大的一块内存,是线程共享的内存区域,基本上所有的对象实例数组都是在堆上分配空间。堆区细分为Yound区年轻代和Old区老年代,其中年轻代又分为Eden、S0、S1 3个部分,他们默认的比例是8:1:1的大小。栈:栈是线程私有的内存区域,每个方法执行的时候都会在栈创建一个栈帧,方法的调用过程就对应着栈的入栈和出栈的过程。每个栈帧转载 2021-03-10 18:01:46 · 686 阅读 · 0 评论 -
JVM性能调优详解
目录性能调优何时进行JVM调优JVM调优的基本原则JVM调优目标JVM调优量化目标JVM调优的步骤JVM参数JVM参数解析及调优内存优化示例延迟优化示例吞吐量调优调优工具性能调优性能调优包含多个层次,比如:架构调优、代码调优、JVM调优、数据库调优、操作系统调优等。架构调优和代码调优是JVM调优的基础,其中架构调优是对系统影响最大的。...转载 2019-11-20 09:49:05 · 238 阅读 · 0 评论 -
【JVM】JVM执行子系统
目录1.Class类文件1.1 Java跨平台的基础1.2 Class类的本质1.3 Class文件格式1.4 Class文件格式详解1.4.1 魔数与Class文件的版本1.4.2 常量池1.4.3 访问标志1.4.4 类索引、父类索引与接口索引集合1.4.5 字段表集合1.4.6 方法表集合1.4.7 属性表集合2.字节码指令2.1 加...转载 2019-08-07 14:33:50 · 305 阅读 · 0 评论 -
内存泄露与内存溢出的区别
目录内存泄漏 memory leak内存溢出 out of memory二者的关系内存泄漏的分类(按发生方式来分类)内存溢出原因内存溢出的解决方案内存泄漏 memory leak是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。内存溢出 out of memory指程序申请内存时,没有足...转载 2019-08-07 13:55:44 · 141 阅读 · 0 评论 -
JVM常见面试题解析
目录1.什么情况下会发生栈内存溢出。2.详解JVM内存模型3.JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么要分为Eden和Survivor。4. JVM中一次完整的GC流程是怎样的,对象如何晋升到老年代5.你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms和G1,包括原理,流程,优缺点。6.JVM内存模型的相关知识了解多少,比如重排序,内存屏障,happe...转载 2019-08-07 13:11:47 · 532 阅读 · 0 评论 -
案例实战:每日上亿请求量的电商系统,如何优化JVM年轻代垃圾回收参数?
目录1、案例背景引入2、特殊的电商大促场景3、抗住大促的瞬时压力需要几台机器?4、大促高峰期订单系统的内存使用模型估算5、内存到底该如何分配?6、新生代垃圾回收优化之一:Survivor空间够不够7、新生代对象躲过多少次垃圾回收后进入老年代?8、多大的对象直接进入老年代?9、别忘了指定垃圾回收器10、今日思考题1、案例背景引入按照惯例,我们接下来会用...转载 2019-08-07 10:54:59 · 277 阅读 · 0 评论 -
【JVM】垃圾收集器与内存分配策略
目录一、对象存活判断1、 概述2、 引用介绍3、 对象是否存活3.1、 引用计数算法3.2、 可达性分析算法3.3、 finalize()方法最终判定对象是否存活二、垃圾收集算法1、 标记—清除算法2、 复制算法3、 标记—整理算法4、 分代收集算法三、HotSpot的算法实现1、 枚举根节点2、 安全点3、 安全区域四、垃圾收...转载 2019-08-06 20:24:04 · 231 阅读 · 0 评论 -
【JVM】深入了解性能优化
目录1.影响一个系统性能的方方面面2.常用的性能评价/测试指标2.1 响应时间2.2 并发数2.3 吞吐量2.4 关系3.常用的性能优化手段3.1 总原则3.1.1 避免过早优化3.1.2 进行系统性能测试3.1.3 寻找系统瓶颈,分而治之,逐步优化3.2 前端优化常用手段3.2.1 浏览器/App3.2.2 CDN加速3.2.3 反向代...转载 2019-08-08 15:32:31 · 261 阅读 · 0 评论 -
【JVM】编写高效优雅的Java程序
目录1.面向对象1.1 构造器参数太多怎么办?1.2 不需要实例化的类应该构造器私有1.3 不要创建不必要的对象1.4 避免使用终结方法1.5 使类和成员的可访问性最小化1.6 使可变性最小化1.7 优先使用复合1.8 接口优于抽象类2.方法2.1 可变参数要谨慎使用2.2 返回零长度的数组或集合,不要返回null2.3 优先使用标准的异常3...转载 2019-08-08 14:08:44 · 240 阅读 · 0 评论 -
【JVM】灵魂拷问:Java对象的内存分配过程是如何保证线程安全的?
目录1、Java对象的内存分配2、TLAB3、总结JVM内存结构,是很重要的知识,相信每一个静心准备过面试的程序员都可以清楚的把堆、栈、方法区等介绍的比较清楚。上图,是一张在作者根据《Java虚拟机规范(Java SE 8)》中描述的JVM运行时内存区域结构画的。很多人都知道Java对象是在堆内存中分配空间的(JIT优化除外),也知道内存分配过程中是线程安...转载 2019-08-08 11:54:32 · 755 阅读 · 0 评论 -
【JVM】对象并不一定都是在堆上分配内存的(JIT、逃逸分析)
目录JVM内存分配策略逃逸分析对象的栈上内存分配总结前段时间,给星球的球友们专门码了一篇文章《深入分析Java的编译原理》,其中深入的介绍了Java中的javac编译和JIT编译的区别及原理。并在文中提到:JIT编译除了具有缓存的功能外,还会对代码做各种优化,比如:逃逸分析、 锁消除、 锁膨胀、 方法内联、 空值检查消除、 类型检测消除、 公共子表达式消除等。有球友阅...转载 2019-08-08 11:40:44 · 1316 阅读 · 1 评论 -
【JVM】你知道 OOM 常见原因吗?有什么好的解决方法?
目录1. Java heap space原因分析解决方案2. GC overhead limit exceeded3. Permgen space原因分析解决方案4. Metaspace5. Unable to create new native thread原因分析解决方案6. Out of swap space?原因分析解决方案7. ...转载 2019-07-29 11:37:04 · 209 阅读 · 0 评论 -
JVM核心:JVM运行和类加载
目录关于JVM运行时数据区关于类加载关于类加载器类加载器的层次结构关于java.lang.ClassLoader类加载器的代理模式:双亲委派机制写一个自定义类加载器本篇博客将写一点关于JVM的东西,涉及JVM运行时数据区、类加载的过程、类加载器、ClassLoader、双亲委派机制、自定义类加载器等,这些都是博主自己的一点理解,如果有误,欢迎大家评论拍砖~关于J...转载 2019-07-10 16:09:11 · 125 阅读 · 0 评论 -
听说又被 JVM 内存区域方面的面试题给虐了?看看这篇文章吧!
目录一 概述二 运行时数据区域2.1 程序计数器2.2 Java 虚拟机栈2.3 本地方法栈2.4 堆2.5 直接内存三 HotSpot 虚拟机对象探秘3.1 对象的创建3.2 对象的内存布局3.3 对象的访问定位四 重点补充内容String 类和常量池1、String 对象的两种创建方式2、String 类型的常量池比较特殊。它的主要使...转载 2019-04-08 16:28:15 · 1366 阅读 · 2 评论 -
想要去阿里面试?你必须得知道JVM-运行时数据区!
目录概述区域划分程序计数器Java虚拟机栈Java堆内存方法区 / Metaspace本地方法栈堆外内存总结概述很多人想要到阿里巴巴、美团、京东等互联网大公司去面试,但是现在互联网大厂面试一般都必定会考核JVM相关的知识积累和实践经验,毕竟线上系统写好代码部署之后,每个工程师都必须关注JVM相关的东西,比如OOM、GC等问题.所以一起来看看JVM的最...转载 2019-04-25 17:33:49 · 428 阅读 · 0 评论 -
Tomcat 调优及 JVM 参数优化
目录一、Tomcat 本身优化1、工作方式选择2、Connector 连接器的配置3、配置文件优化二、JVM 优化1、JVM 参数配置方法2、JVM 参数属性3、设置系统属性4、常见的 Java 内存溢出有以下三种Tomcat 的缺省配置是不能稳定长期运行的,也就是不适合生产环境,它会死机,让你不断重新启动,甚至在午夜时分唤醒你。对于操作系统优化来说,是尽...转载 2019-06-28 16:06:48 · 2905 阅读 · 1 评论 -
JVM 完整深入解析(JVM运行时数据区、JMM、堆内存划分、GC算法、HotSpot虚拟机详解、JVM优化、类加载机制)
目录Java运行时数据区1、程序计数器2、虚拟机栈3、本地方法栈4、方法区5、堆(Heap)JMM Java内存模型堆的内存划分1、新生代2、老年代3、Perm4、堆内存的划分在JVM里面的示意图GC垃圾回收一、 判断对象是否要回收的方法:可达性分析法二、 发现虚拟机频繁full GC时应该怎么办三、常见的垃圾回收算法HotSpo...转载 2019-07-09 15:30:04 · 965 阅读 · 0 评论 -
JVM类加载过程
目录类加载过程加载验证准备解析初始化类加载过程Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢?系统加载 Class 类型的文件主要三步:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。加载类加载过程的第一步,主要完成下面3件事情: 通过全类名获取定义...转载 2019-05-13 15:58:47 · 284 阅读 · 0 评论