❶ concurrenthashmap怎样解决缓存
类HASHSET所有已实现的接口:Serializable,Cloneable,Iterable,Collection,Set此类实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set的迭代顺序;特别是它不保证该顺序搜索恒久不变。此类允许使用null元素。此类为基本操作提供了稳定性能,这些基本操作包括add、remove、contains和size,假定哈希函数将这些元素正确地分布在桶中。对此set进行迭代所需的时间与HashSet实例的大小(元素的数量)和底层HashMap实例(桶的数量)的“容量”的和成比例。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。注意,此实现不是同步的。如果多个线程同时访问一个哈希set,而其中至少一个线程修改了该set,那么它必须保持外部同步。这通常是通过对自然封装该set的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用Collections.synchronizedSet方法来“包装”set。最好在创建时完成这一操作,以防止对该set进行意外的不同步访问:Sets=Collections.synchronizedSet(newHashSet());类HASHMAP所有已实现的接口:Serializable,Cloneable,Map基于哈希表的Map接口的实现。此实现提供所有可选的映射操作,并允许使用null值和null键。(除了异步和允许使用null之外,HashMap类与Hashtable大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。类CONCURRENTHASHMAP所有已实现的接口:Serializable,ConcurrentMap,Map支持获取的完全并发和更新的所期望可调整并发的哈希表。此类遵守与Hashtable相同的功能规范,并且包括对应于Hashtable的每个方法的方法版本。不过,尽管所有操作都是线程安全的,但获取操作不必锁定,并且不支持以某种防止所有访问的方式锁定整个表。此类可以通过程序完全与Hashtable进行互操作,这取决于其线程安全,而与其同步细节无关。
❷ java map可以放多少数据
map由key value键值对组成,具体放多少数据和你的服务器运行时的内存有关系,同时也和你代码中及时清理无效缓存有关系。
一般编写代码中不会去考虑放多少数据问题,除非你数据量超级大对内存要求比较高。这个时候需要对代码和服务器进行优化
❸ 鹰大的ROM里面的Googlemap缓存存在哪能否读离线地图文件
2.2的谷歌地图、你看过之后会自动保存的、、、你连WIFI接着狂看就行了、、、
查看原帖>>
❹ java怎么实现map 缓存技术
/**
*缓存池
*@authorxiaoquan
*@create2015年3月13日上午10:32:13
*@see
*/
publicclassCachePool{
;//缓存池唯一实例
privatestaticMap<String,Object>cacheItems;//缓存Map
privateCachePool(){
cacheItems=newHashMap<String,Object>();
}
/**
*得到唯一实例
*@return
*/
(){
if(instance==null){
instance=newCachePool();
}
returninstance;
}
/**
*清除所有Item缓存
*/
(){
cacheItems.clear();
}
/**
*获取缓存实体
*@paramname
*@return
*/
(Stringname){
if(!cacheItems.containsKey(name)){
returnnull;
}
CacheItemcacheItem=(CacheItem)cacheItems.get(name);
if(cacheItem.isExpired()){
returnnull;
}
returncacheItem.getEntity();
}
/**
*存放缓存信息
*@paramname
*@paramobj
*@paramexpires
*/
(Stringname,Objectobj,longexpires){
if(!cacheItems.containsKey(name)){
cacheItems.put(name,newCacheItem(obj,expires));
}
CacheItemcacheItem=(CacheItem)cacheItems.get(name);
cacheItem.setCreateTime(newDate());
cacheItem.setEntity(obj);
cacheItem.setExpireTime(expires);
}
(Stringname,Objectobj){
putCacheItem(name,obj,-1);
}
/**
*移除缓存数据
*@paramname
*/
(Stringname){
if(!cacheItems.containsKey(name)){
return;
}
cacheItems.remove(name);
}
/**
*获取缓存数据的数量
*@return
*/
publicintgetSize(){
returncacheItems.size();
}
}
publicclassCacheItem{
privateDatecreateTime=newDate();//创建缓存的时间
privatelongexpireTime=1;//缓存期满的时间
privateObjectentity;//缓存的实体
publicCacheItem(Objectobj,longexpires){
this.entity=obj;
this.expireTime=expires;
}
publicbooleanisExpired(){
return(expireTime!=-1&&newDate().getTime()-createTime.getTime()>expireTime);
}
/**
*省略getter、setter方法
*/
}
❺ java中怎么样将方法中的map内数据保存以便在下次调用时继续使用
你可以把这个map定义为类成员,如果是通过静态方法向map里面加东西,那就定义为静态成员。总之,定义为方法内的局部变量是肯定不行的,因为它的作用域是方法内,执行一次方法后,这个map变量的生命周期就到了,下次再调用的时候,是产生一个新的map。(java不像c,c++,没有局部静态变量)
❻ java jdis 可以缓存map 吗
缓存是Java中主要的内容,主要目的是缓解项目访问数据库的压力以及提升访问数据的效率,以下是通过Map实现java缓存的功能,并没有用cache相关框架。
一、缓存管理类 CacheMgr.java
[java] view plain
package cache.com;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* 缓存管理类
* @author Administrator
*
*/
public class CacheMgr {
private static Map cacheMap = new HashMap();
private static Map cacheConfMap = new HashMap();
private static CacheMgr cm = null;
//构造方法
private CacheMgr(){
}
public static CacheMgr getInstance(){
if(cm==null){
cm = new CacheMgr();
Thread t = new ClearCache();
t.start();
}
return cm;
}
/**
* 增加缓存
* @param key
* @param value
* @param ccm 缓存对象
* @return
*/
public boolean addCache(Object key,Object value,CacheConfModel ccm){
System.out.println("开始增加缓存-------------");
boolean flag = false;
try {
cacheMap.put(key, value);
cacheConfMap.put(key, ccm);
System.out.println("增加缓存结束-------------");
System.out.println("now addcache=="+cacheMap.size());
flag=true;
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
* 获取缓存实体
*/
public Object getValue(String key){
Object ob=cacheMap.get(key);
if(ob!=null){
return ob;
}else{
return null;
}
}
/**
* 获取缓存数据的数量
* @return
*/
public int getSize(){
return cacheMap.size();
}
/**
* 删除缓存
* @param key
* @return
*/
public boolean removeCache(Object key){
boolean flag=false;
try {
cacheMap.remove(key);
cacheConfMap.remove(key);
flag=true;
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
* 清除缓存的类
* 继承Thread线程类
*/
private static class ClearCache extends Thread{
public void run(){
while(true){
Set tempSet = new HashSet();
Set set = cacheConfMap.keySet();
Iterator it = set.iterator();
while(it.hasNext()){
Object key = it.next();
CacheConfModel ccm = (CacheConfModel)cacheConfMap.get(key);
//比较是否需要清除
if(!ccm.isForever()){
if((new Date().getTime()-ccm.getBeginTime())>= ccm.getDurableTime()*60*1000){
//可以清除,先记录下来
tempSet.add(key);
}
}
}
//真正清除
Iterator tempIt = tempSet.iterator();
while(tempIt.hasNext()){
Object key = tempIt.next();
cacheMap.remove(key);
cacheConfMap.remove(key);
}
System.out.println("now thread================>"+cacheMap.size());
//休息
try {
Thread.sleep(60*1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
二、缓存属性类 CacheConfModel.java
[java] view plain
package cache.com;
/**
* 缓存属性类
* @author Administrator
*
*/
public class CacheConfModel implements java.io.Serializable{
private long beginTime;//缓存开始时间
private boolean isForever = false;//是否持久
private int rableTime;//持续时间
public long getBeginTime() {
return beginTime;
}
public void setBeginTime(long beginTime) {
this.beginTime = beginTime;
}
public boolean isForever() {
return isForever;
}
public void setForever(boolean isForever) {
this.isForever = isForever;
}
public int getDurableTime() {
return rableTime;
}
public void setDurableTime(int rableTime) {
this.rableTime = rableTime;
}
}
❼ hashTable 和 hashMap 作缓存,实现的两种单例的区别
hashMap和 hashTable区别主要是hashTable对所有的读取和修操作改加了同步锁,你的那个例子如果没有其他入口可以修改managers的情况下 hashMap和 hashTable是一样的,否则会有并发问题, ConcurrentHashMap主要是用了分段锁,并发使用性能好点,可以看下源代码就知道了
❽ 【求助】Map输出的临时数据在本机的什么位置
1.jpg
内存溢出
跟
maprece的内存有关系,跟文件缓存没有关系。中间是磁盘操作,跟内存没有关系。
每个Job在运行时是散布在TaskTracker上,由不同的JVM来执行。所以这个问题归根结底就是想获取每个运行task的JVM对资源的消费情况。
详细参考
计算Job运行时的CPU与内存平均利用率(
MapRece
)
❾ java下载图片出错使用map集合缓存地址怎么写
理论上,jvm会定期帮你回收垃圾,释放内存。 如果短时间大量调用该方法,建议用System.gc(),强制回收,jvm会较快响应(非及时)。
另外, refreshData 需要谨慎,不用的对象尽量赋值null,方便回收
❿ google map 怎么缓存到本地
你好
很高兴为您解答
这个好像实现不了的
满意采纳下