這篇文章帶給大家的內容是介紹JVM的記憶體分配方式,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
前言
本篇講解在java程式執行時,記憶體的分配是怎麼進行的?
java虛擬機器編譯時的記憶體儲存有三類:
1、靜態(方法區)儲存
2、堆疊式儲存
3、堆式儲存
靜態儲存是指在編譯的時候就得確定這個資料的儲存需求,然後給它一個固定的內存,所以說靜態存儲不允許有可變的數據結構出現,因為可變的數據不會確定存儲空間
棧式存儲相比於靜態存儲正好相反,在編譯時,棧式存儲指定的存儲資料是不確定的,只有真正運行到這個資料的時候才知道,那時候才能為它分配內存空間
堆式存儲相對於棧式存儲,棧式存儲在分配空間前必須指定資料要分配多少內存,而堆式儲存則完全無法確定資料結構所需的記憶體空間,例如可變數組,物件實例,所以堆是由大片的可利用區塊和空閒區塊組成
堆疊和堆疊
靜態儲存相對簡單,所以我們著重分析堆疊和堆疊的關係和差異
##區別 :在堆疊中的資料一旦超過它的作用域之後,就會被釋放,記憶體會被其他資料佔用
在堆中,分配的記憶體由java虛擬機自動垃圾回收器管理,這些可變數組、物件在沒有引用變數指向他們的時候,才會變成垃圾,但仍然佔著內存,之後再一個不確定的時間被垃圾回收器釋放掉
關係在堆中建立一個資料之後,可以在堆疊中定義一個變量,這個變數指向堆中的某個數據(指向資料的首地址),也就是說這個變數變成了堆中資料的引用變量,可以利用引用變數來存取堆中的數據,這就是java的指標。
堆疊(stack)
先看下這張圖(嗯 畫的很形象)壓棧),在這個方法的執行過程中,這個幀就會用來保存資料
方法的存在有堆疊決定,而由於先進後出的形式,方法之間巢狀的越深,stack的記憶體就越難釋放,所以遞歸這樣的方法本人不建議使用下面貼出壓棧和出棧的具體實作使用壓棧出棧來將字串倒序String value = "test 1234567890"; StringBuffer result = new StringBuffer(); Stack stack = new Stack(); for(char c : value.toCharArray()) { stack.push(c); } while (!stack.empty()) { result.append(stack.pop()); } value = result.toString();相關影片教學推薦:《
Java教學》
#以上就是本篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !以上是JVM的記憶體分配方式介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

本文解釋了用於構建分佈式應用程序的Java的遠程方法調用(RMI)。 它詳細介紹了接口定義,實現,註冊表設置和客戶端調用,以解決網絡問題和安全性等挑戰。

本文詳細介紹了用於網絡通信的Java的套接字API,涵蓋了客戶服務器設置,數據處理和關鍵考慮因素,例如資源管理,錯誤處理和安全性。 它還探索了性能優化技術,我

本文詳細介紹了創建自定義Java網絡協議。 它涵蓋協議定義(數據結構,框架,錯誤處理,版本控制),實現(使用插座),數據序列化和最佳實踐(效率,安全性,維護


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

Atom編輯器mac版下載
最受歡迎的的開源編輯器