文档章节

Java基础11

DouDouLee
 DouDouLee
发布于 2016/05/09 22:32
字数 899
阅读 28
收藏 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()放在堆中

 

© 著作权归作者所有

共有 人打赏支持
DouDouLee
粉丝 6
博文 95
码字总数 45242
作品 0
西安
你所需要的java提升篇大总结

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

sihailoveyan
04/25
0
0
JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千!

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m366917/article/details/52724939 JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千! 经过了几...

Aduroidpc
2016/10/02
0
0
阿里巴巴菜鸟Java一面11个问题,你会几个呢?

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

W3Cschool
04/03
0
0
百词斩Java程序员面试11个问题,你会几个?2018-04-10

近日,我们在w3cschool app开发者头条上,可以看到百词斩Java程序员面经。 在分享百词斩Java面经前,w3cschool特别给程序员小伙伴们带来一些Java学习干货: 0、学习Java必备的3大神器 如果你...

W3Cschool
04/10
0
0
Java程序员们读什么书决定了对未来职业方向的选择

学习Java最痛苦的事情莫过于对未来职业方向的选择。尤其是选择开发Java Application还是Java Web方向,在你先定好大类后还有数不尽的小类教你无从学起。 因此,作为初学者的你必须看完本文。...

kingdelee
2014/10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

72.告警系统邮件引擎 运行告警系统

20.23/20.24/20.25 告警系统邮件引擎 20.26 运行告警系统 20.23/20.24/20.25 告警系统邮件引擎 邮件首先要有一个mail.py,以下。 因为我们之前zabbix的时候做过,就可以直接拷贝过来 mail.s...

王鑫linux
26分钟前
0
0
09-利用思维导图梳理JavaSE-

09-利用思维导图梳理JavaSE-Java IO流 主要内容 1.Java IO概述 1.1.定义 1.2.输入流 - InputStream 1.3.输出流 - OutputStream 1.4.IO流的分类 1.5.字符流和字节流 2.InputStream类 2.1.File...

飞鱼说编程
32分钟前
1
0
Spring Cloud 微服务的那点事

在详细的了解SpringCloud中所使用的各个组件之前,我们先了解下微服务框架的前世今生。 单体架构 在网站开发的前期,项目面临的流量相对较少,单一应用可以实现我们所需要的功能,从而减少开...

我是你大哥
42分钟前
1
0
步步深入MySQL:架构->查询执行流程->SQL解析顺序

一、前言 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了。 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来探讨一...

Java干货分享
56分钟前
1
0
gson1.7.1线程并发导致空指针问题

java.lang.NullPointerExceptionat com.google.gson.FieldAttributes.getAnnotationFromArray(FieldAttributes.java:231)at com.google.gson.FieldAttributes.getAnnotation(FieldAttribut......

东风125
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部