日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java技术中的三大特性

發(fā)布時(shí)間:2023/11/29 java 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java技术中的三大特性 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??

1.虛擬機(jī)????????????????????????????????????????????????????????????????????????

Java虛擬機(jī)JVMJava Virtual Machine)在Java編程里面具有非常重要的地位,約相當(dāng)于前面學(xué)到的Java運(yùn)行環(huán)境,虛擬機(jī)的基本功能如下:

1):通過ClassLoader尋找和裝載class文件

2):解釋字節(jié)碼成為指令并執(zhí)行,提供class文件的運(yùn)行環(huán)境

3):進(jìn)行運(yùn)行期間垃圾回收

4):提供與硬件交互的平臺(tái)

Java虛擬機(jī)是在真實(shí)機(jī)器中用軟件模擬實(shí)現(xiàn)的一種想象機(jī)器。Java虛擬機(jī)代碼被存儲(chǔ)在?.class文件中;每個(gè)文件都包含最多一個(gè)public類。Java?虛擬機(jī)規(guī)范為不同的硬件平臺(tái)提供了一種編譯Java技術(shù)代碼的規(guī)范,該規(guī)范使Java?軟件獨(dú)立于平臺(tái),因?yàn)榫幾g是針對作為虛擬機(jī)的“一般機(jī)器”而做。這個(gè)“一般機(jī)器”可用軟件模擬并運(yùn)行于各種現(xiàn)存的計(jì)算機(jī)系統(tǒng),也可用硬件來實(shí)現(xiàn)。編譯器在獲取Java應(yīng)用程序的源代碼后,將其生成字節(jié)碼,它是為JVM生成的一種機(jī)器碼指令。每個(gè)Java解釋器,不管它是Java技術(shù)開發(fā)工具,還是可運(yùn)行applets?Web瀏覽器,都可執(zhí)行JVM

JVM為下列各項(xiàng)做出了定義

-???指令集(相當(dāng)于中央處理器[CPU] )

-???寄存器

-???類文件格式

-???

-???垃圾收集堆

-???存儲(chǔ)區(qū)

JVM的代碼格式由緊縮有效的字節(jié)碼構(gòu)成。由JVM字節(jié)碼編寫的程序必須保持適當(dāng)?shù)念愋图s束。大部分類型檢查是在編譯時(shí)完成。任何從屬的Java技術(shù)解釋器必須能夠運(yùn)行任何含有類文件的程序,這些類文件應(yīng)符合Java虛擬機(jī)規(guī)范中所指定的類文件格式。

?

1.1?虛擬機(jī)是Java平臺(tái)無關(guān)的保障

正是因?yàn)橛刑摂M機(jī)這個(gè)中間層,Java才能夠?qū)崿F(xiàn)與平臺(tái)無關(guān)。虛擬機(jī)就好比是一個(gè)Java運(yùn)行的基本平臺(tái),所有的Java程序都運(yùn)行在虛擬機(jī)上.?

Java源程序(*.java文件)

Java類文件(*.class文件)

編譯

平臺(tái)無關(guān)

平臺(tái)相關(guān)

Java虛擬機(jī)

被裝載進(jìn)入虛擬機(jī)

Linux

Windows

Unix

解釋執(zhí)行字節(jié)碼文件????????????

?

2.垃圾回收?????????????????????????????????????????????????????????????????????

2.1?什么是垃圾

在程序運(yùn)行的過程中,存在被分配了的內(nèi)存塊不再被需要的情況,那么這些內(nèi)存塊對程序來講就是垃圾。

產(chǎn)生了垃圾,自然就需要清理這些垃圾,更為重要的是需要把這些垃圾所占用的內(nèi)存資源,回收回來,加以再利用,從而節(jié)省資源,提高系統(tǒng)性能。

?

2.2?垃圾回收

-?????????不再需要的已分配內(nèi)存應(yīng)取消分配(釋放內(nèi)存)

-?????????在其它語言中,取消分配是程序員的責(zé)任

-?????????Java編程語言提供了一種系統(tǒng)級(jí)線程以跟蹤內(nèi)存分配

-?????????垃圾收集

-?????????可檢查和釋放不再需要的內(nèi)存

-?????????可自動(dòng)完成上述工作

-?????????可在JVM實(shí)現(xiàn)周期中,產(chǎn)生意想不到的變化

許多編程語言都允許在程序運(yùn)行時(shí)動(dòng)態(tài)分配內(nèi)存,分配內(nèi)存的過程由于語言句法不同而有所變化,但總是要將指針返回到內(nèi)存的起始位置,當(dāng)分配內(nèi)存不再需要時(shí)(內(nèi)存指針已溢出范圍),程序或運(yùn)行環(huán)境應(yīng)釋放內(nèi)存。

CC++?或其它語言中,程序員負(fù)責(zé)釋放內(nèi)存。有時(shí),這是一件很困難的事情。因?yàn)槟悴⒉豢偸鞘孪戎纼?nèi)存應(yīng)在何時(shí)被釋放。當(dāng)在系統(tǒng)中沒有能夠被分配的內(nèi)存時(shí),可導(dǎo)致程序癱瘓,這種程序被稱作具有內(nèi)存漏洞。

Java編程語言解除了程序員釋放內(nèi)存的責(zé)任。它可提供一種系統(tǒng)級(jí)線程以跟蹤每一次內(nèi)存的分配情況。在Java虛擬機(jī)的空閑周期,垃圾收集線程檢查并釋放那些可被釋放的內(nèi)存。垃圾收集在Java技術(shù)程序的生命周期中自動(dòng)進(jìn)行,它解除了釋放內(nèi)存的要求,這樣能夠有效避免內(nèi)存漏洞和內(nèi)存泄露(內(nèi)存泄露就是程序運(yùn)行期間,所占用的內(nèi)存一直往上漲,很容易造成系統(tǒng)資源耗盡而降低性能或崩潰)。

?

2.3?提示

1Java里面,垃圾回收是一個(gè)自動(dòng)的系統(tǒng)行為,程序員不能控制垃圾回收的功能和行為。比如垃圾回收什么時(shí)候開始,什么時(shí)候結(jié)束,還有到底哪些資源需要回收等,都是程序員不能控制的。

2有一些跟垃圾回收相關(guān)的方法,比如:System.gc() ,?記住一點(diǎn),調(diào)用這些方法,僅僅是在通知垃圾回收程序,至于垃圾回收程序運(yùn)不運(yùn)行,什么時(shí)候運(yùn)行,都是無法控制的。

3程序員可以通過設(shè)置對象為null(后面會(huì)講到)來標(biāo)示某個(gè)對象不再被需要了,這只是表示這個(gè)對象可以被回收了,并不是馬上被回收。

?

3.代碼安全?????????????????????????????????????????????????????????????????????

Java如何保證編寫的代碼是安全可靠的呢?

1)第一關(guān):編寫的代碼首先要被編譯成為class文件,如果代碼寫得有問題,編譯期間就會(huì)發(fā)現(xiàn),然后提示有編譯錯(cuò)誤,無法編譯通過。

2)第二關(guān):通過編譯關(guān)后,在類裝載的時(shí)候,還會(huì)進(jìn)行類裝載檢查,把本機(jī)上的類和網(wǎng)絡(luò)資源類相分離,在調(diào)入類的時(shí)候進(jìn)行檢查,因而可以限制任何“特洛伊木馬”的應(yīng)用。

3)第三關(guān):類裝載后,在運(yùn)行前,還會(huì)進(jìn)行字節(jié)碼校驗(yàn),以判斷你的程序是安全的。

4)第四關(guān):如果你的程序在網(wǎng)絡(luò)上運(yùn)行,還有沙箱(Sand Box)的保護(hù),什么是沙箱呢?就是如果你的程序沒有獲得授權(quán),只能在沙箱限定的范圍內(nèi)運(yùn)行,是不能夠訪問本地資源的,從而保證安全性。?

?

Compile

HelloWorld.java

HelloWorld.class

Javac

Network

Class Loader

Java

Byte code verifier

Interpreter

Hardware

Runtime

編譯檢查

裝載檢查

字節(jié)碼校驗(yàn)

Runtime

沙箱保護(hù)

http://sishuok.com/forum/blogPost/list/1732.html?

轉(zhuǎn)載于:https://my.oschina.net/itommy/blog/845468

總結(jié)

以上是生活随笔為你收集整理的Java技术中的三大特性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。