实现一个简易内存池
2022/4/5 7:20:23
本文主要是介绍实现一个简易内存池,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、题目描述
https://blog.51cto.com/u_15127575/3271270
2、代码:
import java.util.*; // 样例2: // 5 // REQUEST=10 // REQUEST=20 // RELEASE=0 // REQUEST=20 // REQUEST=10 // 输出样例2: // 0 // 10 // 30 // 0 public class 内存分配_self { // key存内存开始地址,value存内存的结束地址 public static TreeMap<Integer, Integer> treeMap = new TreeMap<>(); public static int defaulttart = 0; public static int defaultEnd = 100; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int line = Integer.parseInt(scanner.nextLine()); for (int i = 0; i < line; i++) { String command = scanner.nextLine(); if (command.startsWith("REQUEST=")) { String s = command.split("=")[1]; int size = Integer.parseInt(s); System.out.println(request(size)); System.out.println(treeMap.toString()); } else { String s = command.split("=")[1]; int startAddress = Integer.parseInt(s); release(startAddress); System.out.println(treeMap.toString()); } } } // 返回分配到的内存首地址 // 0-9 20-39 50-69 public static String request(int size) { if (size < 0 || size > 100) { System.out.println("erro"); } if (treeMap.isEmpty()) { treeMap.put(defaulttart, defaulttart + size - 1); return String.valueOf(defaulttart); } int curStart = defaulttart; ArrayList<Integer> begains = new ArrayList<>(treeMap.keySet()); // 判断已使用的内存中间是否有空闲的内存 for (int i = 0; i < begains.size(); i++) { if (begains.get(i) - curStart >= size) { treeMap.put(curStart, curStart + size-1); return String.valueOf(curStart); } else { curStart = treeMap.get(begains.get(i)) + 1; } } // 最大内存和已使用的内存地址的最大值是否空闲 if (defaultEnd - curStart >= size) { treeMap.put(curStart,curStart+size-1); return String.valueOf(curStart); } else { return "erro"; } } // 释放内存 public static void release(int startAddress) { if (treeMap.containsKey(startAddress)) { treeMap.remove(startAddress); } else { System.out.println("erro"); } } }
。。
这篇关于实现一个简易内存池的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南