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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

java的内存管理_操作系统实验——java内存管理

發布時間:2025/3/15 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java的内存管理_操作系统实验——java内存管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.Test.java

import java.util.Scanner;

public class Test {

public static void main(String[] args) {

Test.begin();

}

public static void begin(){

Free f=new Free();

Use u=new Use();

System.out.println("》》》--------------請選擇操作----------《《《");

System.out.println("》》》--------------1.申請內存----------《《《");

System.out.println("》》》--------------2.釋放內存----------《《《");

System.out.println("》》》--------------3.退出程序----------《《《");

Scanner sc=new Scanner(System.in);

int a=sc.nextInt();

while(a!=3){

switch(a){

case 1:u.use();break;

case 2:f.free();break;

}

System.out.println("》》》--------------請選擇操作----------《《《");

System.out.println("》》》--------------1.申請內存----------《《《");

System.out.println("》》》--------------2.釋放內存----------《《《");

System.out.println("》》》--------------3.退出程序----------《《《");

sc=new Scanner(System.in);

a=sc.nextInt();

}

System.out.println("系統退出成功!");

}

}

2.Use.java

import java.util.Scanner;

public class Use {

public static Node first=null;

public static Node tail=null;

public static int count=0;

public static int name=1;

public void use(){

System.out.println("請輸入需要的內存空間:");

Scanner sc=new Scanner(System.in);

int a=Integer.parseInt(sc.nextLine());

if(a<=Free.all){

Node node=new Node();

if(count==0){

node.firstaddress=0;

node.length=a;

node.name=name;

first=node;

tail=node;

}

else{

node.firstaddress=tail.firstaddress+tail.length;

node.length=a;

node.name=name;

tail.next=node;

tail=node;

}

count++;

name++;

Free.all=Free.all-a;

}

else{

System.out.println("內存空間不夠!");

}

Free.print();

}

}

3.Free.java

import java.util.Scanner;

public class Free {

public static Node first=null;

public static Node tail=null;

public static int count=0;

public static Node befortail=null;

public static int all=1000;

public void free(){

System.out.println("請輸入要釋放的內存塊名:");

Scanner sc=new Scanner(System.in);

int a=Integer.parseInt(sc.nextLine());

Node node=new Node();

node=Use.first;

if(a==Use.first.name){

if(count==0){

first=node;

tail=node;

}

else{

tail.next=node;

tail=node;

}

Use.first=node.next;

}

else {

for(int i=0;i

if(node.name==a){

break;

}

befortail=node;

node=node.next;

}

if(count==0){

first=node;

tail=node;

}

else{

tail.next=node;

tail=node;

}

if(Use.tail!=Free.befortail.next){

Free.befortail.next=node.next;

}

else{

Use.tail=Free.befortail;

Use.tail.next=null;

}

}

count++;

Use.count--;

Free.merge();

Free.print();

}

public static void merge(){

Node[] node=new Node[100];

Node[] node2=new Node[100];

int a=0;

Node node1=new Node();

node1=first;

for(int i=0;i

if(node1!=null){

node[node1.name]=node1;

node1=node1.next;

}

}

for(int i=0;i<100;i++){

if(node[i]!=null){

node2[a]=node[i];

node2[a].next=null;

a++;

}

}

if(count>1){

for(int i=0;i

if(node2[i].firstaddress+node2[i].length==node2[i+1].firstaddress){

node2[i+1].firstaddress=node2[i].firstaddress;

node2[i+1].length=node2[i].length+node2[i+1].length;

node2[i]=null;

Free.count--;

}

}

}

if(node2[a-1].firstaddress+node2[a-1].length==1000-Free.all){

Free.all+=node2[a-1].length;

node2[a-1]=null;

Free.count--;

}

if(Free.count!=0){

if(node2[0]!=null){

first=node2[0];

}

else{

first=node2[1];

}

for(int i=0;i

if(node2[i]!=null){

befortail=node2[i];

befortail.next=node2[i+1];

}

}

}

}

public static void print(){

System.out.println("占用內存塊表:");

System.out.println("內存塊名 內存塊首地址 內存塊長");

Node node=new Node();

node=Use.first;

for(int i=0;i

if(node!=null){

System.out.println(" "+node.name+" "+node.firstaddress+" "+node.length);

node=node.next;

}

}

System.out.println("空閑內存塊表:");

System.out.println("內存塊名 內存塊首地址 內存塊長");

Node freenode=new Node();

freenode=Free.first;

for(int i=0;i

if(freenode!=null){

System.out.println(" "+freenode.name+" "+freenode.firstaddress+" "+freenode.length);

freenode=freenode.next;

}

}

}

}

4.Node.java

public class Node {

public int firstaddress;

public int length;

public int name;

public Node next;

}

實驗5 ?內存管理(2學時)

一、實驗目的

通過實驗加強對內存管理方法的理解和掌握。

二、實驗內容

編寫程序實現采用可變分區方法管理內存。

三、實驗要求

1、在該實驗中,采用可變分區方式完成對存儲空間的管理(即存儲空間的分配與回收工作)。

2、設計用來記錄主存使用情況的數據結構:已分區表和空閑分區表或鏈表。

3、在設計好的數據結構上設計一個主存分配算法(循環首次適應算法)。

4、在設計好的數據結構上設計一個主存回收算法。其中,若回收的分區有上鄰空閑分區和(或)下鄰空閑分區,要求合并為一個空閑分區登記在空閑分區表的一個表項里。

5、(附加)若需要可以實現程序的浮動,對內存空間進行緊湊

總結

以上是生活随笔為你收集整理的java的内存管理_操作系统实验——java内存管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。