Java系列总结(一)

原创 2018年04月17日 09:46:47

看完北大陈向群教授的《操作系统原理》后,决定重新去深入学一遍Java,研究其底层的核心原理。JVM的本质也是一个操作系统,负责管理计算机的软硬件思维,所以带着操作系统的思维去理解JVM我觉得会有更深的体会。

---------------------------------------------------------------------------------------------------------------------------------

一. 操作系统是什么?JVM是什么?跨平台是什么?

操作系统是计算机系统中的一个系统软件,负责组织和管理计算机的软硬件资源,是资源的管理者。主要功能有进程线程管理,存储管理,文件管理,I/O设备管理和用户接口。

硬件资源:CPU,存储器,设备(I/O设备,时钟,网卡等)

软件资源:磁盘上的文件,各类管理信息等

JVM也是一个计算机系统软件,是基于物理机所安装的操作系统上又虚拟出来的一个子操作系统,是资源的管理者,不同平台有不同的版本。JVM负责将.class字节码文件解释成特定平台下的机器码,然后运行。在不同平台下安装对应的JVM,就可以运行字节码文件,因此,运行Java程序必须要有JVM的支持。不同平台下编译生成的字节码是一样的,但由JVM解释生成的机器码是不一样的。所以说,跨平台的是Java程序,而不是JVM。

跨平台:不依赖于操作系统,也不依赖于硬件环境。泛指程序语言软件或硬件设备可以在多种作业系统或不同硬件架构的电脑上运行。一个操作系统下开发的应用,放到另一个操作系统下依然可以运行。

二. 并发环境是什么?并发程序是什么?

并发环境:一段时间间隔内,但处理器上有两个或两个以上的程序同时处于开始运行但尚未结束的状态,并且次序不是事先确定的

并发程序:在并发环境中执行的程序。

三. 进程是什么?线程是什么?

进程:具有独立功能的程序关于某个数据集合上一次运行活动,是系统进行资源分配和调度的独立单位。

——是程序的一次执行过程

——是正在运行程序的抽象

——系统资源以进程为单位分配,每个进程具有独立的地址空间

——操作系统将CPU调度给需要的进程

当我们启动一个Java程序时,JVM会为这个程序创建一个进程,并将该程序的可执行文件映射到该进程结构,表示由该进程执行该程序。

扩展:进程与程序的区别

1.程序是静态的,进程是动态的。

2.进程是有生命周期的,有诞生有消亡;而程序是相对长久的。

3.一个程序可以对应多个进程

4.进程具有创建其他进程的功能

线程:进程中的一个运行实体,是CPU调度的最小单位,是轻量级的进程

扩展:为什么要在进程中派生出线程?

1.应用的需要

   (1)典型的应用:Web服务器

   (2)工作方式

           -从客户端接收网页请求(http协议)

           -从磁盘上检索相关网页,读入内存

           -将网页返回给对应的客户端

   (3)如何提高服务器工作效率?

            网页缓存(Web Page Cache)

         

2.开销的考虑


3.性能的考虑

   多个线程,有的计算,有的处理I/O......


重点推荐阮一峰的博文《进程与线程的一个简单解释》,绝对通俗易懂

http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wydyd110/article/details/79970266

java Date总结

java Date总结  1.计算某一月份的最大天数Calendar time=Calendar.getInstance();time.clear();time.set(Calendar.YEAR,y...
  • hwx521
  • hwx521
  • 2008-04-18 14:20:00
  • 543

Java-Collection集合总结

Set集合(理解)(1)Set集合的特点 无序,唯一 (2)HashSet集合(掌握) A:底层数据结构是哈希表(是一个元素为链表的数组) B:哈希表底层依赖两个方法:hash...
  • zmken497300
  • zmken497300
  • 2016-08-03 09:32:12
  • 206

【总结】Effective java经验之谈,通用方法

对于通用方法,其实应用的场景是比较多的,我们在写一个类的时候,就要考虑是否要编写该方法的通用方法。这使得我们为以后该类的扩展性与使用方面提供很大的便利。...
  • superMarss
  • superMarss
  • 2015-04-13 23:34:31
  • 1319

Java多线程干货系列

Java多线程干货系列—(一)Java多线程基础 Java多线程干货系列—(二)synchronized      Java多线程干货系列—(四)volatile关键字...
  • u014695188
  • u014695188
  • 2017-05-08 16:31:57
  • 407

Java8 Date总结

Java8 时间 Java.time包中的是类是不可变且线程安全的。新的时间及日期API位于java.time中,下面是一些关键类 ●Instant——它代表的是时间戳 ●LocalDat...
  • black_cheng
  • black_cheng
  • 2017-11-06 19:15:55
  • 106

PWA(Progressive Web App)入门系列:(二)相关准备

前言在上一章中,对PWA的相关概念做了基本介绍,了解了PWA的组成及优势。为了能够更快的进入PWA的世界,这一章主要对在PWA开发中,需要注意的问题,运行的环境及调试工具做介绍说明。浏览器要求因为目前...
  • lecepin
  • lecepin
  • 2017-12-26 00:07:33
  • 4188

springboot下@Value属性注入简单使用

1.使用 @Value("${...}") 方式: 可以获取属性文件中对应的值(如果属性文件中没有这个属性,则会报错。可以通过赋予默认值解决这个问题,如@Value("${attr:127.0.0....
  • lh597293004
  • lh597293004
  • 2018-01-30 15:48:55
  • 40

Java系列超完整总结合集-刘伟

  • 2018年04月10日 20:04
  • 111.07MB
  • 下载

JavaWeb——HTML_总结

HTML基础知识总结
  • RamProg
  • RamProg
  • 2015-09-11 23:22:36
  • 718

超详细的Java面试题总结(二)之Java基础知识篇

系列文章: 超详细的Java面试题总结(一)之Java基本知识 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java...
  • qq_34337272
  • qq_34337272
  • 2017-12-15 20:12:15
  • 473
收藏助手
不良信息举报
您举报文章:Java系列总结(一)
举报原因:
原因补充:

(最多只允许输入30个字)