JAVA虚拟机8月份专题
徐明曉
这个作者很懒,什么都没留下…
展开
-
【JVM调优】
【JVM调优】[1] 说下你用过的 JVM 监控工具?[2] 如何利用监控工具调优?[3] JVM 的一些参数?[4] JVM在内存调优方面[5] 怎么做JDK8的内存调优?[6] 调优实战对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。[1] 说下你用过的 JVM 监控工具?jvisualvm:虚拟机监视和故障处理平台jps :查看当前 Java 进程jstat:显示虚拟机运行数据jmap:内存监控jhat:分析 heapdump 文件原创 2020-08-05 10:41:35 · 331 阅读 · 0 评论 -
【<JVM垃圾回收专题>】
这里写目录标题[1] 垃圾回收的场所及原因?[2] 为什么学习GC和如何学习GC?[3] JVM如何判定一个对象是否应该被回收?[4] 在java中为什么不推荐使用finalize[4] 详细说下四种引用?[5] 常用的垃圾收集算法有哪些?[4] 分代收集的理论支撑?[6] 常用的垃圾收集器(内部使用垃圾收集算法)有哪些?[7] 垃圾收集器如何互相配合使用[8] CMS说一下?[9] G1 说一下?[10] G1和CMS?[10] 说下你对垃圾回收策略的理解/垃圾回收时机?[11] 分区大小比值及原创 2020-08-05 10:40:29 · 488 阅读 · 0 评论 -
【<类加载器专题>】
【<类加载器专题>】[1] 什么是类加载器?[2] 类加载器的分类有?[3] 类加载器的职责有?[4] 什么是双亲委派机制?[1] 什么是类加载器?类是在运行期间第一次使用时动态加载的,而不是一次性加载所有类。因为如果一次性加载,那么会占用很多的内存。包括以下 7 个阶段(加点盐,准备解出时写):加载(Loading)验证(Verification)准备(Preparation)解析(Resolution)初始化(Initialization)使用(Using)卸载(U原创 2020-08-05 10:37:42 · 224 阅读 · 0 评论 -
元空间(Metaspace)
java8中移除了永久代,新增了元空间的概念。原来的方法区是逻辑划分中的一个区域,对应hotspot jdk6中的永久代,可以说永久代是方法区在hotspot的一个具体实现,但是从jdk7以后方法区就“四分五裂了”,不再是在单一的一个去区域内进行存储。java8中继承了一些jdk7中的改变:符号引用存储在native heap中,字符串常量和静态类型变量存储在普通的堆区中,这个影响了String的intern()方法的行为,这里不做intern的详述。而在java8中移除了永久代,新增了元空间,其实在这原创 2020-08-05 10:36:35 · 3371 阅读 · 0 评论 -
Stop-The-World
一.概述:java对象内存申请过程:1.JVM会试图为相关Java对象在Eden中初始化一块内存区域;当Eden空间足够时,内存申请结束。否则到下一步;2.JVM试图释放在Eden中所有不活跃的对象(minor collection),释放后若Eden空间仍然不足以放入新对象,则试图将部分Eden中活跃对象放入Survivor区;3.Survivor区被用来作为Eden及old的中间交换区域,当old区空间足够时,Survivor区的对象会被移到Old区,否则会被保留在Survivor区;4.当o原创 2020-08-05 10:36:02 · 542 阅读 · 0 评论 -
什么是栈帧?
每个方法再虚拟机栈被执行的时候,都会同步创建一个栈帧,用于存储局部变量表,操作数栈,动态链接,方法出口等信息。每个方法被调用直至执行完毕的过程,就对应着一个栈帧在虚拟机中从入栈到出栈的过程。...原创 2020-08-05 10:35:30 · 606 阅读 · 0 评论 -
为什么要学习Jvm?
为了更好的理解java语言为了再内存泄漏和溢出时候进行补救JVM调优原创 2020-08-05 10:34:58 · 257 阅读 · 0 评论 -
JMM是什么?
JMM:Java内存模型,是java虚拟机规范中所定义的一种内存模型,Java内存模型是标准化的,屏蔽掉了底层不同计算机的区别(注意这个跟JVM完全不是一个东西,现在还有小伙伴搞错的)。其实早期计算机中cpu和内存的速度是差不多的,但在现代计算机中,cpu的指令速度远超内存的存取速度,由于计算机的存储设备与处理器的运算速度有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为内存与处理器之间的缓冲。将运算需要使用到的数据复制到缓存中,让运算能原创 2020-08-05 10:34:26 · 2685 阅读 · 0 评论 -
谈谈对内存泄漏的理解?
在 Java 中,内存泄漏就是存在一些不会再被使用确没有被回收的对象,这些对象有下面两个特点:这些对象是可达的,即在有向图中,存在通路可以与其相连;这些对象是无用的,即程序以后不会再使用这些对象。如果对象满足这两个条件,这些对象就可以判定为 Java 中的内存泄漏,这些对象不会被 GC 所回收,然而它却占用内存。哪些操作会造成内存泄漏?内存泄漏,就是不再需要的对象仍然存在内存中,内存泄漏不断堆积的后果就是内存溢出,即内存不够用。垃圾回收机制会定期扫描对象,如果一个对象没有被其他对象引用,或两原创 2020-08-05 10:33:56 · 475 阅读 · 0 评论 -
谈谈对运行时数据区的理解?
VM中的内存主要划分为5个区域,即方法区,堆内存,虚拟机栈,本地方法栈以及程序计数器。方法区:它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码等(存储的数据一般持久性比较强)数据。堆内存:在虚拟机启动时创建,存放对象实例。Java 堆是垃圾收集器管理的主要区域,因此很多时候也被称做“GC”堆(Garbage Collected Heap)。从内存回收的角度看,由于现在收集器基本都采用分代收集算法,所以 Java 堆中还可以细分为:新生代和老年代。虚拟机栈:为虚拟机执行J原创 2020-08-05 10:33:24 · 598 阅读 · 0 评论 -
说一下 JVM 的主要组成部分?
类加载器(ClassLoader)运行时数据区(Runtime Data Area)执行引擎(Execution Engine)本地库接口(Native Interface)各组件的作用?首先通过类加载器会把 Java 代码转换成字节码,运行时数据区再把字节码加载到内存中,执行引擎负责将字节码翻译成底层系统指令,交由 CPU 去执行,而这个过程中需要调用其他语言的本地库接口来实现整个程序的功能。Java中的类加载机制有了解吗?Java中的类加载机制指虚拟机把描述类的数据从 .原创 2020-08-05 10:32:58 · 442 阅读 · 0 评论