2 ezhishui ezhishui 于 2016.09.18 20:00 提问

缓存直接缓存byte数组:map.put("key", byte[])有啥其他影响么

缓存直接缓存byte数组:map.put("key", byte[]),这样会不会导致什么问题?性能或者其他

1个回答

cangyingzhijia
cangyingzhijia   2016.09.18 21:16
已采纳

光从java语言的角度来说不会有任何的影响,内部使用的是引用方式,对于value是什么类型对map的影响并不大,
对map性能有影响的是key的类型,。当如如果考虑到不同的表示对内存的消耗不同,比如value是String类型总比byte[]是要多占用内存的,
如果内存占的太多了由于虚拟内存、硬件cache line命中率的下降等等原因肯定会对性能造成影响,当然java开发中很少遇上这种情况

ezhishui
ezhishui 厉害,那相对来说value用byte[] 反而比string占用内存要少吧,那现有很多代码写的value都是string,不如用byte[]好,这样理解对吗
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
设计一个字节数组缓存类
版权所有,转载须注明出处!1、为什么要在做网络通信的时候,经常需要用到:读:就是我们需要从网络流里面读取字节数据,并且由于分包的原因,我们需要自己缓存这些数据,而不是读完立刻丢掉。写:我们需要把各种类型的数据变成字节写入。比如把int、string、short等变成字节数组写入流。2、需要什么我们需要设计一个类来实现:支持可以不停地往这个类中添加字节支持写入int、string、short等基础数
JAVA 缓存数组之----ByteArrayInputStream类详解
Java ByteArrayInputStream类 字节数组输入流在内存中创建一个字节数组缓冲区,从输入流读取的数据保存在该字节数组缓冲区中。创建字节数组输入流对象有以下几种方式。 接收字节数组作为参数创建: ByteArrayInputStream bArray = new ByteArrayInputStream(byte [] a); 另一种创建方式是接收一个
字节流 自定义缓冲字节数组 读写文件
package com.heima.lei;import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;public class Test1 { /**字节流 自定义缓冲字节数组 读写文件
redis 在spring boot工程中的应用(四) 图片的读取与缓存 byte string
图片由于文件比较大,常用的图片如多采用读取数据库或者文件的方式会加大系统的负载。采用缓存保存的方法可以增加效率。 http://stackoverflow.com/questions/13215024/weird-redis-key-with-spring-data-jedis 这里已经提供了图片的读取方法和类型转换方法,修改一下即可。 本文采用的是,将工程下的文件读入到redis缓存缓存
Java_io_BufferedWriter,BufferedReader字节缓存流
本博客为子墨原创,转载请注明出处! http://blog.csdn.net/zimo2013/article/details/8884724 IO流简介>>  1.缓冲流机制    BufferedReader和BufferedWriter ,用到的是装饰模式,装饰模式就是在原有类FileReader(发现功能不能满足)进行扩充,不是一个个字符的读写,而是一行行的读写!    (1
Java中的字节流、缓冲流
一、Java中流的分类 1.字符流 Reader   Writer 字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节, 操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好。 2.字节流 InputStream   OutputStre
byte[]数组作为map的key的问题
byte[]数组作为key值,只是数组的地址的引用的hashcode,不能够根据byte[]数组的内容来,创建相应的hashcode,也就是所谓的索引key。所以,如果想用byte[]数组来作为map的key值的话,有三种方法: 1. 将byte[],先转化为string 2. 将采用list<byte> 3. 将byte[]自己包装,使用byte[]数组的内容来重写hashcode和equ
JAVA 缓存数组之----ByteArrayOutputStream类详解
Java ByteArrayOutputStream类 字节数组输出流在内存中创建一个字节数组缓冲区,所有发送到输出流的数据保存在该字节数组缓冲区中。创建字节数组输出流对象有以下几种方式。 下面的构造方法创建一个32字节(默认大小)的缓冲区。 OutputStream bOut = new ByteArrayOutputStream(); 另一个构造方法创建一个大小为n字节的
java Redis Jedis存储Java对象 - (Java序列化为byte数组方式)
Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)   Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)   原文地址:http://alanland.iteye.com/admin/blogs/1600685(欢迎转载 - 转载请保留该原文链接)   07/19/12 03:08:05 PM   在
使用Golang下chan实现一个缓冲池(Pool)
// BytesPool is a pool of byte slice that can ben used type BytesPool struct { pool chan []byte } func NewBytesPool(max int) *BytesPool { return &BytesPool{ pool: make(chan []byte, max), } } /