java虚拟机
文章平均质量分 52
虚拟星辰
这个作者很懒,什么都没留下…
展开
-
【Java虚拟机】运行时数据区笔记
架构图 线程共享数据区 堆 用于存放对象实例 堆本身没有分区,所有的分区方法都只是逻辑分区,仅用于帮助理解,如:GC分为新生代、老年代、永久代、Eden等,线程可以有线程缓冲区 堆内存在物理上可以是不连续的,逻辑上连续即可。 方法区 用于存储被虚拟机加载的类型信息、常量、静态变量、即时编译后的代码缓存等数据。 方法区容易和“永久代”混淆 老版本中,为了方便,用堆的永久代方法实现方法区 java8中,完全舍弃永久代,用元空间实现方法区 永久代的约束宽松 不需要连续内存空间 可以固定大小,也可以可扩展 可原创 2020-12-04 08:54:30 · 120 阅读 · 0 评论 -
【Java虚拟机】垃圾回收-如何判断对象已死?
大家都知道java虚拟机中,内存回收是自动的,有垃圾收集器(GC)完成。那么垃圾收集器是如何判断哪些对象需要回收呢?这就引申出在java虚拟机中如何判断对象还是否有用。最常用的两种方法是引用计数法和可达性分析法,下面对这两种算法的原理做简单的额介绍。 引用计数法 实现步骤: 给对象中添加一个引用计数器 当有一个地方引用它时,计数器值就加1 当引用失效时,计数器值就减1 任何时刻计数器为0的对象就是不可能再被使用的,垃圾收集器就将其回收。 优点:简单、效率高 缺点:当出现循环引用时,计数器永远不为0,垃圾原创 2020-12-04 08:51:48 · 115 阅读 · 0 评论 -
JDK基础脚本工具总结
本文摘自《深入理解Java虚拟机 第三版》,如此书的作者所说,虽然现在已经有个各种可视化工具实现了对命令行工具的封装,方便且体验良好。但是不论JDK发展到什么版本,或者工具如何封装,这些底层实现的基本思想都不会过时,都值得广大开发人员学习。 1 基础工具:用于支持基本的程序创建和运行 名称 主要作用 appletviewer 在不适用web浏览器的情况下运行和调试Applet ,JDK11中被移除 excheck 检查jar冲突的工具,JDK9中被移除 jar 创建和管理jar文件原创 2020-12-03 19:54:12 · 173 阅读 · 0 评论 -
【JAVA虚拟机】可视化监视与管理控制台-JConsole
1 什么是JConsole Java开发者为了方便广大研发人员在开发过程中,对jvm性能情况进行实时监控与查看,开发了一整套完整的性能监控系统,包括命令行脚本与可视化页面,其中,命令行脚本的使用方式可以查看文章:【java虚拟机】JDK的命令行工具详解 。 但是,虽然命令行工具的功能完备且强大,但是由于使用复杂,可视化程度低,不利于研发人员的使用,所以jdk也同时内置了可视化监控工具JConsole,在jdk的bin目录下既可以找到。 JConsole(Java Monitoring and Manage原创 2020-12-03 17:43:35 · 230 阅读 · 0 评论 -
【java虚拟机】JDK的命令行工具详解
一、概述 JDK的命令行工具指的是jdk的bin目录中的一些可执行工具,除了常用的java、javac之外,还有很多其他可执行工具,主要包括用于监视虚拟机和故障处理的工具。这些故障处理工具被Sun公司作为“礼物”附赠给JDK的使用者。 主要的工具和功能如下: 名称 中文名 全拼 主要作用 jps 虚拟机进程状况工具 JVM ProcessStatus Tool 显示指定系统内所有虚拟机进程 jstat 虚拟机统计信息监视工具 JVM Statistics Monitoring Tool原创 2020-12-02 17:31:55 · 421 阅读 · 0 评论 -
【JAVA虚拟机】垃圾收集算法详解
JVM虚拟机在判断哪些对象需要回收之后,接下来就是如何回收这些对象的内存。可以把系统内存想象成一个个小方格,jvm使用到的内存和需要收集到内存都散乱分布。如何将需要回收的内存回收,并尽可能提高效率和剩余内存的规整? 标记-清除算法 这个是最基础的算法,顾名思义,这个算法分为两步: 首先标记出所有需要回收的对象 在标记完成后统一回收所有被标记的对象。 标记-清除算法的缺点: 效率问题,标记和清除两个过程的效率都不高 空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行原创 2020-12-02 08:51:21 · 96 阅读 · 0 评论