文档章节

Java基础11

DouDouLee
 DouDouLee
发布于 2016/05/09 22:32
字数 899
阅读 31
收藏 3

1、Java是平台独立性语言

平台独立性是指可以在一个平台上编写和编译程序,而在其他平台上运行。保证Java具有平台独立性的机制为“中间码”和“Java虚拟机(Java Virtual Machine)”。Java程序编译后不是生成能在硬件平台上可执行的代码而是生成“中间码”。不同硬件平台上会安装不同的JVM,由JVM负责把“中间码”翻译成硬件平台能执行的代码,因此能看出JVM不是平台独立的,是与硬件平台相关的。

解释执行分三步进行:代码的装入、代码的校验和代码的执行,装入代码的工作由“类加载器”完成,装入的代码由字节码校验器进行检查。

Java字节码的执行分两种方式:

1)解释执行指解释器通过每次解释执行一小段代码来完成Java字节码程序的所有操作。

2)即时编译方式,解释器现将字节码编译成机器码,再执行该机器码。

Java平台

包含两个模块:JVM和Java API。JVM是一个虚构出来的计算机,用来把Java编译成的中间代码转换为机器可以识别的编码并运行。有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统,它屏蔽了与具体OS相关的信息,使Java程序只需生成在JVM上运行的目标代码(即字节码)就可以在多种平台上顺利运行。每当一个java程序运行时,都会有一个对应的JVM实例。当程序运行结束后,这个JVM才会退出。JVM实例通过调用类的main()方法来启动一个Java程序。

2、GC(Garbage Collection)垃圾回收

自动检测对象的作用域,把不再使用的存储空间释放掉。垃圾回收器需要完成三个任务:分配内存、确保被引用对象的内存不被错误的回收、回收不再被引用的对象的内存空间。

垃圾回收器使用有向图来记录和管理堆内存中的所有对象,通过有向图来识别哪些对象是“可达的(有引用变量引用它)”,哪些是不可达的。

3、内存泄漏

Java中的内存泄漏主要指一个不再被程序使用的对象或变量还在内存中占有存储空间。

引起内存泄漏的几个原因:

1)静态集合类,如HashMap和Vector,若为static,他们的生命周期与程序一致,那么容器中的对象在程序结束之前不能被释放

2)各种连接,如数据库连接、网络连接、IO连接等,只有连接被关闭后才会回收,若不显式的关闭会造成对象无法被回收。

3)监听器,在释放对象的时候往往没有删除相应的见同期

4)变量的不合理作用域,变量的作用域大于其使用范围,还有未及时的将对象置为null

4、Java中的堆和栈

都是存放数据的地方。栈内存主要存放基本数据类型和引用变量;堆内存存放运行时创建的对象

A a = new A();//a放在栈中, new A()放在堆中

 

© 著作权归作者所有

上一篇: Dos下查看端口
下一篇: Java基础10
DouDouLee
粉丝 6
博文 95
码字总数 45242
作品 0
西安
私信 提问
你所需要的java提升篇大总结

java基础篇深入解析大总结 java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规则 java基础(三) 加强型for循环与Iterator java基础(四) java运算顺序的深入解析 java基础(五) Str...

sihailoveyan
2018/04/25
0
0
Java程序设计经典300例

《Java程序设计经典300例》共分为3篇。 第1篇 基础篇(第1~5章)本篇主要内容包括:Java语言基础、流程控制、数组、字符串和面向对象编程。通过本篇的学习,读者可以掌握Java开发环境的配置...

请叫我院长
2013/12/03
467
0
阿里巴巴菜鸟Java一面11个问题,你会几个呢?

近日,w3cschool app开发者头条上分享了阿里菜鸟Java程序员一些面试题。 这吸引了不少程序员小伙伴们的注意。 在分享阿里菜鸟Java程序员面经前,来看下Java面试一些面试经验分享: 0、Java高...

W3Cschool
2018/04/03
0
0
Java程序员从笨鸟到菜鸟全部博客目录【2012年十一月七日更新】

本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 大学上了一年半,接触java也一年半了,虽然中间也有其他东西的学习,但是还是以java为主路线,想想这一年半,...

长平狐
2012/11/12
205
0
《Java程序员由笨鸟到菜鸟》电子版书正式发布,欢迎大家下载

在众多朋友的支持和鼓励下,《Java程序员由菜鸟到笨鸟》电子版终于和大家见面了。本电子书涵盖了从java基础到javaweb开放框架的大部分内容。在编写的过程中,难免会出现一些错误,希望大家能...

长平狐
2012/11/12
242
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部