java 保护内存操作的方法
1、與c++不同,在java中,沒有通過使用強制轉換指針類型或者通過進行指針運算直接訪問內存的方法。在java中使用對象時,需要嚴格地遵守類型規則。如果存在一個Mountain類對象的引用(類似于c++的指針),它只能作為Mountain使用。這個引用不能強制轉換為Lava類型,更不能把它轉為Lava類型,更不能把它所指向的內存假設為一個Lava對象來操作。像C++中使用指針運算那樣,簡單地給引用加上偏移量也是被禁止的。在java中,將一個引用轉換成別的類型也是可以的,但只能在此對象的確為這種新類型的前提下才能進行。例如,如果一個Mountain的引用實際指向一個Volcano類(一種特殊的Mountain類型)的實例,這個Mountain的引用可以轉換為Volcano的引用。由于Java在運行時強制執行嚴格的類型規則,根本無法以可能導致內存沖突的方式直接管理內存。因此,Java程序中不會出現常使C++程序員減低效率的特定bug。
?
2、Java避免無意間破壞內存的另一個辦法是自動垃圾收集。Java程序員不需要手動的去清除無用的對象,當Java程序停止對一個對象的引用時,一段時間后,垃圾回收器會自動回收這個對象所占據的內存。而C++中需要手動的去釋放對象。如果不再使用的對象沒有被釋放,可能會導致內存的溢出。
?
3、Java在運行時保護內存完整性的第三個辦法是數組邊界檢查。在C++中數組的操作實際上是指針的運算,這會帶來潛在的內存沖突。在C++中聲明一個有是個成員的數組,然后再向第11個成員寫入(盡管這是錯誤的用法,但C++并不會限制這樣做)。在Java中數組是發展完備的對象在每次使用數組的時候,Java都會檢查數組的邊界。當在Java中創建一個10個成員的數組的后,然后嘗試向第十一個成員寫入的時候,Java會拋出異常。Java絕對不會允許數組操作超出邊界,從而導致內存沖突。
?
4、Java確保程序健壯性的例子是對對象引用的檢查,每次使用引用的時候Java都會確保這些引用不會為空值。如果為空,Java會拋出空指針異常。
轉載于:https://www.cnblogs.com/oskyhg/p/6671113.html
總結
以上是生活随笔為你收集整理的java 保护内存操作的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式3:装饰模式
- 下一篇: ESP8266串口模块的基本使用【转】