首页 > 编程知识 正文

简易青贮池,内存的缺点

时间:2023-05-03 05:30:19 阅读:163154 作者:3112

import java.util.Arrays; import java.util.List; import java.util.Scanner; import java.util.TreeMap; import Java.util.stream.collectors; public class main 11 { publicstaticvoidmain (string [ ] args ) }/*具有一个简单的内存池。 按内存大小粒度分类每个粒度有几个可用内存资源的用户需要进行一系列内存申请,根据需要分配内存池中的资源,申请结果返回失败的列表分配规则如下1。 分配的内存大于或等于内存申请量,如果有满足要求的内存,必须优先分配,但不能分割使用内存2。 需要按照申请顺序分配先申请的先分配。 如果有可用的内存分配,如果申请结果为true且不可用,则返回false注释。 无论内存释放输入说明如何,作为两行字符串输入的第一行内存池列表都包含内存粒度数据信息。 粒度数据之间的内存粒度大小在一个粒度信息中用冒号分隔之前用逗号分隔。 冒号后是数量资源列表小于或等于1024的每个粒度数量小于或等于4096的第二行请求列表请求的内存大小,如果请求列表小于或等于100000,则为64:2、128:1、32:4、32:4 127的输出表示输出分配给内存池的结果,如TTT:true、true、false、false样本1 :输入: 64:2、1283:1、32:4、1336012850 真假说明:存储器池资源包括用于50、36、64、128、127存储器申请序列的64k的总共2个、128k的总共1个、32k的总共4个、128个存储器资源,分配按照null的顺序第三次为true、true、false、false */scanner in=new scanner (system.in ); TreeMapInteger,Integer pool=new TreeMap (; Arrays.stream(in.nextline ).split )、()、() )、foreach ) x-{string ) ) split=x.split )、) 3360 ); pool.put (integer.parseint (split [0],integer.parseint ) split[1] ); ); listintegerlist=arrays.stream (in.nextline ).split ),',').map ) integer:parseint ).collect ) stringbuilder builder=new stringbuilder (; for(integersize:list ) {布尔标志=假; integerk : pool.keyset () integerv=pool.get ); if(k=sizev!=0) builder.append('true,'); pool.put(k,v - 1 ); flag=true; 黑; }if (! flag ) builder.append('false,'); } system.out.println (builder.substring (0,builder.length(-1 ) ); }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。