因为考虑到接下来的找工作的事情需要学习一点java的相关知识才可以,于是乎,就拿来《深入理解Java虚拟机》这本书,没事看看,这里记录一下自己的读书笔记,作为自己日后回顾的备份,也希望帮到需要的朋友。

Java体系结构包括了四个独立的但相关的技术:

Java程序设计语言、Java class文件格式、java应用编程接口(API)、Java虚拟机 
    当编写并运行一个Java程序时,就同时体验了这四种技术,用Java编写源代码,把它编译成Java class文件,然后再在Java虚拟机中运行class文件,编写程序时,通过调用类中的方法来访问系统资源如:I/O,程序运行时候它通过调用class文件中实现了Java API的方法来满足程序的Java API调用。
    Java虚拟机和Java API组成了一个“平台”,所有Java程序都在这上面编译。
Java的面向网络的核心就是Java虚拟机,它支持Java面向网络体系结构三大支柱的所有方面:平台无关性、安全性、网络移动性。
    Java虚拟机是一台抽象的计算机,其规范定义了每个Java虚拟机都必须实现的特性,但是为每个特定实现都留下了很多选择。
    Java虚拟机的主要任务是:装载class文件并且执行其中的字节码。Java虚拟机包含一个类装载器,它可以从程序和API中装载class文件,Java API中只有程序执行时需要的那些类才会被装载,字节码由执行引擎来执行。
当Java虚拟机是由主机操作系统上的软件实现的时候,Java程序通过调用本地方法和主机交互。Java中有两种方法:Java方法和本地方法。Java方法由Java语言编写,编译成字节码,存储在class文件中。本地方法是由其他语言编写的,编译成和处理器相关的机器代码。本地方法保存在动态链接库中,格式各个平台专有的,Java方法是与平台无关的,但是本地方法不是,运行中的Java程序调用本地方法时,虚拟机装载包含这个本地方法的动态库,并调用这个方法。

Java 虚拟机学习相关推荐

  1. Java虚拟机学习(8):查看JVM参数及值的命令行工具

    查看JVM各个参数值方式 1. HotSpot vm中的各个globals.hpp文件  查看jvm初始的默认值及参数 globals.hpp globals_extension.hpp c1_glo ...

  2. Java虚拟机学习(7):对象内存分配与回收

    对象优先在Eden上分配 大多数情况下,对象优先在新生代Eden区域中分配.当Eden内存区域没有足够的空间进行分配时,虚拟机将触发一次 Minor GC(新生代GC).Minor GC期间虚拟机将E ...

  3. Java虚拟机学习(6):对象访问

    对象访问会涉及到Java栈.Java堆.方法区这三个内存区域. 如下面这句代码: 1 Object objectRef = new Object(); 假设这句代码出现在方法体中,"Obje ...

  4. Java虚拟机学习(5):内存调优

    JVM调优主要是针对内存管理方面的调优,包括控制各个代的大小,GC策略.由于GC开始垃圾回收时会挂起应用线程,严重影响了性能,调优的目是为了尽量降低GC所导致的应用线程暂停时间. 减少Full GC次 ...

  5. Java虚拟机学习(4):JDK可视化监控工具

    1.JConsole JConsole工具在JDK/bin目录下,启动JConsole后,将自动搜索本机运行的jvm进程,不需要jps命令来查询指定.双击其中一个jvm进程即可开始监控,也可使用&qu ...

  6. Java虚拟机学习(3): 类加载机制

    类加载机制 JVM把class文件加载的内存,并对数据进行校验.转换解析和初始化,最终形成JVM可以直接使用的Java类型的过程就是加载机制. 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的生命 ...

  7. Java虚拟机学习(2):垃圾收集算法

    跟踪收集器 跟踪收集器采用的为集中式的管理方式,全局记录对象之间的引用状态,执行时从一些列GC  Roots的对象做为起点,从这些节点向下开始进行搜索所有的引用链,当一个对象到GC  Roots 没有 ...

  8. Java虚拟机学习(1):体系结构 内存模型

    一:Java技术体系模块图 二:JVM内存区域模型 1.方法区 也称"永久代" ."非堆",  它用于存储虚拟机加载的类信息.常量.静态变量.是各个线程共享的内 ...

  9. 深入java虚拟机学习 -- 类的加载机制(续)

    昨晚写 深入java虚拟机学习 -- 类的加载机制 都到1点半了,由于第二天还要工作,没有将上篇文章中的demo讲解写出来,今天抽时间补上昨晚的例子讲解. 这里我先把昨天的两份代码贴过来,重新看下: ...

  10. java虚拟机学习-JVM调优总结-新一代的垃圾回收算法(11)

    java虚拟机学习-深入理解JVM(1) java虚拟机学习-慢慢琢磨JVM(2) java虚拟机学习-慢慢琢磨JVM(2-1)ClassLoader的工作机制 java虚拟机学习-JVM内存管理:深 ...

最新文章

  1. 多线程程序 怎样查看每个线程的cpu占用
  2. 当excel 导入数据库的字段大于255时,把第一行的字段加长超过255.
  3. [Java基础]Arrays的常用方法
  4. 属性 方法c语言,C语言如何实现C++中对象属性和方法
  5. Chapter7-1_Overview of NLP Tasks
  6. 掌控谈话~谈价格的秘诀
  7. Metasploit Framework(6)客户端渗透(上)
  8. 【求助】测试XCode v8.0的正向反向功能
  9. 28335scififo中断接收与发送
  10. 随机森林入门攻略(内含R、Python代码)
  11. 5.28 周末笔记(三)
  12. php 正则预搜索?=
  13. aizu 0121 Seven Puzzle
  14. Mac OS X 清除DNS缓存
  15. spring session Session().removeAttribute 异常
  16. #swust oj971 和972统计利用先序遍历创建的二叉树的深度和宽度
  17. 运放的信号叠加电路与求差电路
  18. 处理办公文档通过共享打印机无法打印
  19. SQL导入文本错误:大容量插入: 在数据文件中遇到意外的文件结尾 (EOF)。
  20. 数据库 explain详解

热门文章

  1. Linux基础(day74)
  2. 斯坦福大学CS224d基础1:线性代数回顾
  3. Android窗口管理服务WindowManagerService显示Activity组件的启动窗口(Starting Window)的过程分析...
  4. 【通用权限管理】角色的分类管理,角色-用户组-职位职务-系统角色的设计上的迷惑也解开...
  5. Android开发:setAlpha()方法
  6. 执行计划:SET AUTOTRACE TRACEONLY
  7. ES6读书笔记(一)
  8. 源码编译安装screen
  9. 《物流与供应链管理》课程论文
  10. 面试问题——fread和read的区别