随笔分类 - 深入理解Java虚拟机
摘要:4.2 JDK命令行工具 4.2.1 jps 虚拟机进程状况工具 类似于ps命令,用于列出所有正在运行的虚拟机进程。 该命令可以查看远程服务器的JVM情况,但是要开启相应的服务。 4.2.2 jstat 虚拟机统计信息监视工具 jstat结合jps获得到的虚拟机进程编号用于监控虚拟机进程的内存使用情
阅读全文
摘要:主要讲了有关垃圾回收的两个问题:1、什么样的对象是垃圾需要被回收 2、以何种算法回收垃圾 3.2 对象已死吗 如何判断堆里的对象是否需要回收(垃圾回收针对方法区吗)。 3.2.1 引用计数法 给每一个对象添加一个引用计数器,当该对象存在一个引用的时候就加一,引用失效就减一,当一个对象的引用计数器为0
阅读全文
摘要:8.1 概述 执行引擎,一个逼格很高的名字,就是用来执行java字节码的一段代码,执行代码的代码读起来很拗口。与物理机的执行引擎不同,物理机的执行引擎是建立在cpu 操作系统上的,JVM的执行引擎是需要自己编写的。执行引擎执行java字节码的方式有两种,解释执行和编译执行,编译执行就是把字节码编译成
阅读全文
摘要:13.2 线程安全 13.2.1 Java语言中的线程安全 13.2.2 线程安全的实现方法 主要包括两个方面的内容一个是从程序员的角度如何写线程安全的代码,另一个是虚拟机底层如何实现线程安全。 如果多个线程一起读写一个共享的数据,在不加额外措施的情况下一定会产生并发问题,这是一个老生常谈的问题了。
阅读全文
摘要:7.1 概述 不同于传统的语言,java在编译的时候不需要连接,类型的连接、初始化的过程是在运行期间完成的,符号的入口是保留在常量池里的,这给java提供了很大的灵活性,支持动态扩展。比如一个面向接口的程序,可以在运行的时候在指定接口的实现类。 7.2 类加载时机 虽然java在编译的时候不需要连接
阅读全文
摘要:6.1 概述 传统的语言编译后的结果是native code,直接交给计算机去执行,Java编译后是class文件是交给虚拟机执行,编译后的结果是平台无关的中立的格式。 6.2 无关性的基石 各种平台下Java编译后的格式都是一样的,所以称为平台中立的,这个格式就是字节码(Byte Code)。Ja
阅读全文
摘要:2.1 概述 主要介绍Java虚拟机内存是如何划分的。 2.2 运行时数据区域 Java虚拟机就是一个进程,它被分配了自己的内存空间,在JVM执行Java程序的时候会把自己分配到的内存区域划分成若干不同功能的区域。 2.2.1 程序计数器 类似于CPU寄存器里的IP的作用,用于指示下一条要执行的指令
阅读全文

浙公网安备 33010602011771号