基於JAVA的記憶體管理模擬
在作業系統課上的一點小感想,基於JAVA的記憶體管理模擬,分享出來和大家一起學習。
程序的虛擬地址空間中也有三種狀態的頁面:空閒頁面、保留頁面和提交頁面。空閒(Free)頁面:空閒頁面是指那些可以保留或提交的可用頁面。保留(Reserved)頁面:保留頁面是邏輯頁面已分配但沒有分配物理儲存的頁面。設定這種狀態的效果是可以保留一部分虛擬地址,這樣,如果不預先釋放這些地址,就不能被其他應用程式(如 Malloc,LocalAlloc 等)的操作所使用。試圖讀或寫空閒頁面或保留頁面將導致頁面出錯異常。保留頁面可被釋放或提交。提交(Committed)頁面:提交頁面是物理儲存(在記憶體中或磁碟上)已被分配的頁面。可對它加以保護,不許訪問或允許只讀訪問,或允許讀寫訪問。提交也可以被回收以釋放儲存空間,從而變成保留頁面。
在本專案中,首先執行Main類中main函式的makeOperationFile()方法生成隨機輸入檔案,其中包含對記憶體要求作的各種操作;然後執行Main類中main函式的memoryOperation()方法,實現輸入檔案所要求的各項記憶體管理操作。
詳細程式碼和文件在這裡
https://write-bug.com/article/1364.html
相關推薦
基於JAVA的記憶體管理模擬
在作業系統課上的一點小感想,基於JAVA的記憶體管理模擬,分享出來和大家一起學習。 程序的虛擬地址空間中也有三種狀態的頁面:空閒頁面、保留頁面和提交頁面。空閒(Free)頁面:空閒頁面是指那些可以保留或提交的可用頁面。保留(Reserved)頁面:保留頁面是邏輯頁面已分配但沒有分配物理儲存的頁面。設定這種狀
Java記憶體管理之類似-Xms、-Xmx 這些引數的含義
Java記憶體管理之類似-Xms、-Xmx 這些引數的含義 答: 1.堆記憶體分配: JVM 初始分配的記憶體由**-Xms** 指定,預設是實體記憶體的 1/64; JVM 最大分配的記憶體由**-Xmx** 指定,預設是實體記憶體的 1/4; 預設空餘
Java記憶體管理之JVM 記憶體劃分
JVM 記憶體劃分 方法區(執行緒共享):常量、靜態變數、JIT(即時編譯器) 編譯後的程式碼也都在方法區; 堆記憶體(執行緒共享):垃圾回收的主要場所; 程式計數器: 當前執行緒執行的位元組碼的位置指示器; 虛擬機器棧(棧記憶體):儲存區域性變數、基本資料
python垃圾回收機制 Java記憶體管理與垃圾回收
語言的記憶體管理是語言設計的一個重要方面。它是決定語言效能的重要因素。無論是C語言的手工管理,還是Java的垃圾回收,都成為語言最重要的特徵。這裡以Python語言為例子,說明一門動態型別的、面向物件的語言的記憶體管理方式。 物件的記憶體使用 賦值語句是語言最常見的功能了。但即使是最簡單的賦值語句,也可以
Java記憶體管理之GC垃圾回收機制是什麼?什麼是垃圾?如何判斷是否為垃圾?
文章目錄 1. 垃圾回收機制是什麼? 2. 什麼是垃圾呢?如何判斷是否為垃圾呢? 3. GC root指的是誰? 1. 垃圾回收機制是什麼? 垃圾回收機制讓開發者無需關注空間的建立和釋放,而是以守護程序的形式在後臺自動回收垃圾
基於Java記憶體模型:Synchronized和Volatile的比較
1.Java記憶體模型 1.Java記憶體模型 1.Java記憶體模型 1) Java虛擬機器規範試圖定義一種Java記憶體模型,來遮蔽掉各種硬體和作業系統的記憶體訪問差異,以實現讓Java程式在各種平臺下都能
Java記憶體管理之記憶體洩露是什麼?什麼情況下會導致記憶體洩露?
文章目錄 1. 靜態類的使用 2. 資源連線的使用 3. 監聽器的使用 雖然Java擁有垃圾回收機制,但同樣會出現記憶體洩露問題,我們說一下比較主要的三種情況。 1. 靜態類的使用 諸如 HashMap、Vector 等集
Java記憶體管理之Java堆結構是怎麼樣的?裡面有什麼東西?
文章目錄 1. 剛剛建立的物件 2. 存活了一段時間的物件 3. 永久存在的物件 一塊 Java 堆空間一般分成三部分,這三部分用來儲存三類資料:新生代、老年代、永久代。 1. 剛剛建立的物件 在程式碼執行時會持續不斷地創
Java記憶體管理之用什麼方式回收垃圾、管理記憶體呢?垃圾回收演算法有哪些?
文章目錄 1. 什麼是垃圾? 2. 標記-清理(Marked-Sweep) 3. 標記-整理(Marked-Compact) 4. 複製(Copying) 6. Java分代回收機制 6.1 新生代-複製 回收機制
java記憶體管理(堆、棧、方法區)
java記憶體管理 簡介 首先我們要了解我們為什麼要學習java虛擬機器的記憶體管理,不是java的gc垃圾回收機制都幫我們釋放了記憶體了嗎?但是在寫程式的過程中卻也往往因為不懂記憶體管理而造成了一些不容易察覺到的記憶體問題,並且在記憶體問題出現的
Java記憶體管理 -JVM 垃圾回收
一.概述 相比起C和C++的自己回收記憶體,JAVA要方便得多,因為JVM會為我們自動分配記憶體以及回收記憶體。 在之前的JVM 之記憶體管理 中,我們介紹了JVM記憶體管理的幾個區域,其中程式計數器以及虛擬機器棧是執行緒私有的,隨執行緒而滅,故而它是不用考慮垃
java記憶體管理關係及記憶體洩露 原理
這可能是最近寫的部落格中最接近底層的了。閒言少敘,進入正題。 java物件和記憶體的關係 首先,我們要知道下面幾條真理(自己總結的) 一個完整的建立物件流程是 1宣告物件,2開闢記憶體空間,3將物件和記憶體空間建立聯絡。 一個物件只能對應一個記憶體空間,
Java記憶體管理之類似-Xms、-Xm 這些引數的含義
Java記憶體管理之類似-Xms、-Xmx 這些引數的含義 答: 1.堆記憶體分配: JVM 初始分配的記憶體由**-Xms** 指定,預設是實體記憶體的 1/64; JVM 最大分配的記憶體由**-
java記憶體管理-記憶體回收
java的記憶體回收主要分兩個部分: 1、判斷物件是否可以回收。 2、執行回收的過程。 判斷物件是否可以回收: 主要演算法有兩種 (1) 引用計數演算法 給物件中新增一個引用計數器,每當有一個地方引用它時,計數器值就加1;當引用失效時,計數器值就減1;任何時刻計數器
Java記憶體管理知識你需要嗎?
0、Java 對記憶體的劃分: Java虛擬機器規範將實體記憶體(主記憶體和CPU中的快取、暫存器)劃分為程式計數器、Java 虛擬機器棧、本地方法棧、Java 堆、方法區五個區域,但並沒有規定這些區域的具體實現,在其他地方聽到的一些名詞(如永久代、元空間等,這些都是方法區的具體實現)可能都是這些區域具體的
C、python 、java記憶體管理區別
3、全域性區(靜態區)(static)—,全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域, 未初始化的全域性變數和未初始化的靜態變數在相鄰的另一塊區域。 - 程式結束後有系統釋放
JAVA記憶體管理【1.2什麼叫java的記憶體洩露】
1.2什麼叫java的記憶體洩露 在Java中,記憶體洩漏就是存在一些被分配的物件,這些物件有下面兩個特點,首先,這些物件是可達的,即在有向圖中,存在通路可以與其相連(也就是說仍存在該記憶體物件的引用);其次,這些物件是無用的,即程式以後不會再使用這些物件。如果物
這些面試必備的Java記憶體管理知識你需要嗎?
0、Java 對記憶體的劃分: 記憶體劃分 Java虛擬機器規範將實體記憶體(主記憶體和CPU中的快取、暫存器)劃分為 程式計數器、Java 虛擬機器棧、本地方法棧、Ja
面試總結------Java記憶體管理與多執行緒
Java記憶體管理與多執行緒 1. 什麼是執行緒?什麼是程序?同一程序下的執行緒共享 執行緒:程式在執行過程中,能夠執行程式程式碼的一個執行單元,一個執行緒可以建立和撤銷另一個執行緒;同一個程序中的多個執行緒之間可以併發執行。在Java語言中有4種狀態:執行
java記憶體管理與繼承
本文為轉載文章,原文地址:http://blog.csdn.net/sdkdeveloper/article/details/77151593 物件記憶體管理:1.編譯好的java程式(.class)需要執行在JVM中。JVM記憶體分為“堆”,“棧”,“方法區”。2.堆中存