java 1m_Java编程测试1M内存可用来缓存多少对象

为了提高系统的响应性能,一般都会采用缓存技术来实现,如果用象ehcache、oscache这样的开源的cache工具来实现,一般都需要由开发人员来设置maxElementsInMemory这个值,但这个值在设置的时候大家都是怎么去设置的呢?凭想像还是随便写一个值呢?这个值设的过大嘛有可能会造成outofmemory,设的过小嘛又浪费服务器巨大的内存,为了能够更好的设置这个值,我写了个测试程序来估算1M内存能够缓存多少个对象,代码如下:

public void

testSpike(){

print("最大的内存为:"+Runtime.getRuntime().maxMemory()/1024);

print("总的内存为:"+Runtime.getRuntime().totalMemory()/1024);

print("==================================");

long currMemory=Runtime.getRuntime().freeMemory();

print("目前可用的内存为:"+currMemory/1024);

print("==================================");

Map cache=new HashMap();

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

MockBean bean=new MockBean();

bean.setId(i);

bean.setName("jerry"+i);

bean.setValue(i+"jerry");

cache.put(String.valueOf(i), bean);

long tempMemory=Runtime.getRuntime().freeMemory();

if((currMemory-tempMemory)/1024==1024){

print("此时可用的内存为:"+tempMemory/1024);

print("此时缓存了:"+i+"个对象");

break;

}

}

print("==================================");

cache.clear();

long tempMemory=Runtime.getRuntime().freeMemory();

print("目前可用的内存为:"+tempMemory/1024);

print("消耗的内存为:"+(currMemory-tempMemory)/1024);

print("==================================");

Runtime.getRuntime().gc();

tempMemory=Runtime.getRuntime().freeMemory();

print("目前可用的内存为:"+tempMemory/1024);

print("消耗的内存为:"+(currMemory-tempMemory)/1024);

}

private void print(String msg){

System.out.println(msg);

}

在我机器上运行的结果是1M内存可缓存大概4479个对象,同时可以看到,在cache.clear后内存并没有变化,因为gc是没那么及时的,这个时候显式的调用gc则会发现可用的内存量甚至比最初都多。

当然,这里只是个简单的测试,这里测试的也只是缓存一个非常简单的bean对象,缓存的对象消耗的内存大小还需要根据这个对象中具体的内容而定,比如当缓存的是blob类型的字段的时候,可想而知,这个时候消耗的内存量绝对是不同的。

这里只是建议大家在对系统性能做优化时最好根据需要缓存的内容做一个估算,设置好应用所需要的jvm的内存值,以便充分利用服务器的硬件资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

评审恩仇录——我为什么愿意执行代码评审

简介&#xff1a; 代码评审带来的好处不言自明, 但企业业务快速发展的诉求与代码评审推动落地两者之间, 往往存在矛盾。在如今快速发展的互联网时代&#xff0c;数字化、智能化已经是基础能力&#xff0c;单纯只靠人肉审查的时代已经过去了&#xff0c;基于各种自动化检查能力的…

AI+混合云模式,如何最大化挖掘数据价值?

9月8日&#xff0c;IBM举行了“科技一席谈”线上媒体访谈会&#xff0c;此次访谈以“数据与AI”为主题&#xff0c;由IBM 大中华区科技事业部、客户成功管理部总经理朱辉&#xff0c;IBM 中国混合云与 AI 华东及华南大区总经理许伟杰作主题分享。 在数字化转型的时代&#xff…

python期中考试知识点_大学期末考试,有哪些高效复习的技巧?

不知道有没有人和我一样&#xff0c;坐的端端正正听老师讲&#xff0c;不到半个小时&#xff0c;就眼神涣散...高中转笔&#xff0c;切橡皮大学抠手&#xff0c;玩游戏其实根据科学表明&#xff0c;当你在听一门比较重要的课时&#xff0c;拿着笔在纸上漫无目的得乱画&#xff…

阿里云贾扬清:大数据和人工智能一体化是必然趋势

简介&#xff1a; 拥抱“融合”是大数据演进的新方向&#xff0c;⼤数据⼈⼯智能⼀体化是⼤数据发展的必然⽅向&#xff0c;而人工智能是⼤数据业务发展的终极出⼝ 。 12月13日&#xff0c;阿里云计算平台负责人贾扬清在Flink Forward Asia 2020 峰会上指出&#xff0c;拥抱“融…

云效安全那些事儿—访问控制与数据安全

简介&#xff1a; 云效 Codeup 提供了代码 GPG 签名&#xff0c;拒绝未签名的提交&#xff1b;支持代码属主验证&#xff0c;约束提交记录属主。 在质量管控上&#xff0c;云效 Codeup 精细化读写权限管控&#xff0c;支持代码提交卡点机制&#xff0c;保障提交质量。 接下来我…

深信服何朝曦:托管云为用户上云提供第三种选择

9月17日&#xff0c;以“万物皆可云”为主题的信服云创新峰会成功举办。会上&#xff0c;深信服科技股份有限公司CEO何朝曦分享了运用云计算技术帮助用户进行数字化转型的观点。他认为兼具公有云和私有云优势的托管云&#xff0c;可以帮助非科技型企业和中小企业获得“数字化平…

java 使用c .dll_Windows下java调用c的dll动态库--Dev_Cpp编译c生成dll

1.eclipse下建立一个HelloJNI.java内容如下&#xff1a;package JNI;public class HelloJNI{static{System.out.println("开始");System.loadLibrary("goodluck");System.out.println("结束");}public native static int get();public native st…

阿里云助力江苏省财政厅力推统一公共支付平台

简介&#xff1a; 为深化“放管服”改革&#xff0c;贯彻“互联网政务服务”要求&#xff0c;江苏省财政厅加快推进江苏省统一公共支付平台建设&#xff0c;实现全省政府非税收入、政务服务在线收缴和财政电子票据的集中统一处理&#xff0c;不仅节约了因“重复建设”产生的财政…

Midway Serverless 发布 2.0,一体化让前端研发再次提效

简介&#xff1a; 2021 年 3 月&#xff0c;Midway Serverless 推出了第二个大版本。就像两年前说的一样&#xff0c;开源只是开始&#xff0c;终态远没有到来。Midway 体系希望能够在当前的十字路口&#xff0c;不断向前演进&#xff0c;让前端可以去发展&#xff0c;朝着应用…

binaryviewer java_用java实现java的2进制文件字节序转换到C/C++的2进制文件字节序

展开全部package admit.action;/*用JAVA读取各种计算机文件系统的文件列表 当你安装了jdk&#xff0c;在32313133353236313431303231363533e78988e69d8331333332613732jdk的类库里&#xff0c;有一个标准的File类&#xff0c;通过该类&#xff0c;可以很方便的实现浏览各种文件…

ZDNS宣布完成B轮融资,根服务器之外,顶级域名系统迎重要机遇

从互联网诞生&#xff0c;由于IPv4技术中UDP报文数据容量限制&#xff0c;到2021的今天&#xff0c;全球也仅有13个根服务器&#xff08;俗称“主根”&#xff09;&#xff0c;其中10个主根由美国持有&#xff0c;英国、瑞典、日本各持有1个。而中国只运营根镜像服务器。虽然目…

应用容灾中,MySQL数据表是否需要跨云同步?

简介&#xff1a; 容灾系统的重要目标在于保证系统数据和服务的“连续性”。当系统发生故障时&#xff0c;容灾系统能够快速恢复服务和保证数据的有效性。为了防止天灾人祸、不可抗力&#xff0c;在同城或异地建立对应的IT系统&#xff0c;其中最核心的工作是数据同步。本文选取…

java浮点数数转二进制的数吗_深入理解计算机系统(2.7)-二进制小数和IEEE浮点标准 - Java 技术驿站-Java 技术驿站...

整数的表示和运算我们已经讲完了&#xff0c;在实际应用中&#xff0c;整数能够解决我们大部分问题。但是某些需要精确表示的数&#xff0c;比如某件商品的价格&#xff0c;某两地之间的距离等等&#xff0c;我们如果用整数表示将会有很大的出入&#xff0c;这时候浮点数就产生…

Docker 终失 C 位,开源少年缘何黑化

作者 | 马超出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;开源真是火了&#xff0c;近些年成功的IT项目像TensorFlow、RocketMQ、TDEngine都是开源项目&#xff0c;而且这种火爆还出了圈&#xff0c;连带着RISC-V这种准开源的芯片也成为了各方争抢的香饽饽。但是…

中油即时通信电脑版_市场营销之即时通讯营销

✎IM营销又叫即时通讯营销(instantmessaging)&#xff0c;是企业通过即时工具im推广产品和品牌,以实现目标客户挖掘和转化的网络营销方式。封面设计丨Sweety 责编丨花花第60篇丨每日一篇好文&#xff1a;2645字丨5分钟阅读即时通讯营销常用的主要有以下两种情况&#xff1a;第一…

java组合框的事件有哪些_博为峰Java技术文章 ——JavaSE Swing列表框选取事件的处理...

博为峰小博老师&#xff1a;在JList类中有addListSelectionListener()方法&#xff0c;可以检测用户是否对JList的选取有任何的改变。在ListSelectionListener接口中只定义一个方法&#xff0c;那就是valueChanged(ListSelectionEvente)&#xff0c;所以必须实现这个方法&#…

使用 Arthas 排查 SpringBoot 诡异耗时的 Bug

简介&#xff1a; 公司有个渠道系统&#xff0c;专门对接三方渠道使用&#xff0c;没有什么业务逻辑&#xff0c;主要是转换报文和参数校验之类的工作&#xff0c;起着一个承上启下的作用。最近&#xff0c;在优化接口的响应时间&#xff0c;优化了代码之后&#xff0c;但是时间…

关于数据库,你可能最想知道的几件事

【CSDN 编者按】随着技术不断更新&#xff0c;数据库的发展可谓全面开花&#xff0c;也吸引了越来越多人的关注&#xff0c;但大家真的都足够了解数据库吗&#xff1f;作者 | 易璜珵 责编 | 侯淼淼出品 | 《新程序员》互联网飞速发展的时代里&#xff0c;数据库、中间件和…

java反编译工具_JDA Java反编译工具的下载和使用手册

JDA(javadecompile analysis)是一款以dex为核心的java反编译工具&#xff0c;同时支持apk、dex、jar文件的反编译&#xff0c;支持动态重命名。该软件主要是用来反编译分析代码而不是反编译出来完全正确的java代码&#xff0c;运行需安装jdk1.8及以上版本版本(jdk1.7应该也行)。…

OpenKruise v0.8.0 核心能力解读:管理 Sidecar 容器的利器

简介&#xff1a; OpenKruise 是阿里云开源的云原生应用自动化管理套件&#xff0c;也是当前托管在 Cloud Native Computing Foundation (CNCF) 下的 Sandbox 项目。它来自阿里巴巴多年来容器化、云原生的技术沉淀&#xff0c;是阿里内部生产环境大规模应用的基于 Kubernetes 之…