⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memory.java

📁 用java模拟内存管理的JAVA代码。 用最佳适应法管理内存
💻 JAVA
字号:
import java.util.*;
public class Memory {
	MemNode startNode = new MemNode();
	MemNode endNode = new MemNode(); 
	Vector memVec = new Vector();
	Memory(int Vol){
		this.startNode.volNo=0;
		this.endNode.volNo=Vol;
		this.startNode.nextNode=endNode;
		this.endNode.nextNode=null;
		this.startNode.state=true;
		this.endNode.state=false;
		this.startNode.vol=endNode.volNo-startNode.volNo;
		this.endNode.vol=0;
	}
	void Apply(String ProName,int Vol){
		MemNode searchNode = new MemNode();
	    MemNode tempNode = new MemNode();
		tempNode.nextNode=this.startNode;
		for(int i=0;i<this.memVec.size()+1;i++){
			if(tempNode.nextNode.state && (tempNode.nextNode.vol>=Vol)){
				tempNode.nextNode.proName=ProName;
				tempNode.nextNode.state=false;
				if(tempNode.nextNode.vol!=Vol){
				    searchNode.nextNode=tempNode.nextNode.nextNode;
					tempNode.nextNode.nextNode=searchNode;
					searchNode.volNo=tempNode.nextNode.volNo+Vol;
					tempNode.nextNode.vol=Vol;
				    searchNode.vol=searchNode.nextNode.volNo-searchNode.volNo;
				    searchNode.state=true;
				    this.memVec.add(searchNode);
				}break;  
			}
			else{
				tempNode.nextNode=tempNode.nextNode.nextNode;
				if(tempNode.nextNode==this.endNode){
				    System.out.println(ProName+" Can't Get Enough Memory");
				    break;
				}
			}
		}
	}
	void Free(String ProName){
	    MemNode tempNode = new MemNode();
		tempNode.nextNode=this.startNode;
		int size=this.memVec.size();
		if(this.startNode.proName==ProName){
			this.startNode.state=true;
			if(this.startNode.nextNode.state==true){
				this.startNode.vol=this.startNode.vol+this.startNode.nextNode.vol;
				this.startNode.nextNode=this.startNode.nextNode.nextNode;
				this.memVec.remove(this.startNode.nextNode);
			}
		}
		else{
			for(int i=0;i<size;i++){
				if(tempNode.nextNode.nextNode.proName==ProName){
					tempNode.nextNode.nextNode.state=true;
					if(tempNode.nextNode.nextNode.nextNode.state==true){
						tempNode.nextNode.nextNode.vol+=tempNode.nextNode.nextNode.nextNode.vol;
						tempNode.nextNode.nextNode.nextNode=tempNode.nextNode.nextNode.nextNode.nextNode;
						this.memVec.remove(tempNode.nextNode.nextNode.nextNode);
					}
					if(tempNode.nextNode.state==true){
						tempNode.nextNode.vol+=tempNode.nextNode.nextNode.vol;
						tempNode.nextNode.nextNode=tempNode.nextNode.nextNode.nextNode;
						this.memVec.remove(tempNode.nextNode.nextNode);
					}break;
				}
				else{
				     tempNode.nextNode=tempNode.nextNode.nextNode;
				     if(tempNode.nextNode.nextNode==this.endNode){
				    	 System.out.println(ProName+" Is Not Found");
				    	 break;
				     }
				}
			}
		}
	}
	void Show(){
		MemNode tempNode = new MemNode();
		tempNode.nextNode = this.startNode;
		for(int i=0;i<this.memVec.size()+1;i++){
			if(tempNode.nextNode.vol!=0){
				if(!tempNode.nextNode.state){
				    System.out.println(((Integer)tempNode.nextNode.volNo).toString()+"-"+((Integer)(tempNode.nextNode.volNo+tempNode.nextNode.vol)).toString()+" "+tempNode.nextNode.proName);
				}
				else{
					System.out.println(((Integer)tempNode.nextNode.volNo).toString()+"-"+((Integer)(tempNode.nextNode.volNo+tempNode.nextNode.vol)).toString()+" is empty");
				}
			}
				tempNode.nextNode=tempNode.nextNode.nextNode;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -