`

Java的Integer是由缓存决定的,我们可以改变缓存来改变Integer

 
阅读更多

import java.lang.reflect.Field;
import java.util.Random;

public class IntegerTest {
	public static void main(String[] args) throws Exception {

		Class<?> clazz = Class.forName("java.lang.Integer$IntegerCache");
		Field field = clazz.getDeclaredField("cache");
		field.setAccessible(true);
		Integer[] cache = (Integer[]) field.get(clazz);
		// 改变Integer的缓存
		for (int i = 0; i < cache.length; i++) {
			cache[i] = new Integer(new Random().nextInt(cache.length));
		}

		for (int i = 0; i < 10; i++) {
			System.out.println((Integer) i); // 这个时候1不是1 ,2也不是2
		}
	}
}


我本地的打印结果是:
254
12
42
39
216
102
20
140
75
119
0
0
分享到:
评论
3 楼 huangyunbin 2015-01-26  
1927105 写道
额,你改默认缓存做什么?

文章地址是:http://www.4byte.cn/learning/84945/wei-ni-de-jvm-zeng-jia-yi-xie.html
2 楼 huangyunbin 2015-01-26  
1927105 写道
额,你改默认缓存做什么?

其实我是看了这篇文章,但是我没有完全理解这个文章中的熵表达的是什么意思。但是觉得他改缓存这个还是很有意思的
1 楼 1927105 2015-01-25  
额,你改默认缓存做什么?

相关推荐

    Java Integer的缓存特性

    项目里遇到的小问题的 整理

    JAVA Integer == equal 比较 doc 比较大小 是否相等

    Integer 对象可以通过自动装箱(autoboxing)或手动创建来获得。自动装箱是指 Java 编译器在编译时将基本类型 int 转换为 Integer 对象的过程。 使用 "==" 运算符比较 Integer 对象 在 Java 中,"==" 运算符用于...

    Java实现的树以及包含树的内存缓存框架

    PS:Java是可以直接操作内存的,只是现在的框架整合让人退化了。不要迷信redis,现在webserver本身的内存也很大的,充分利用嘛。 怎么用?参考下面的代码。 treeCacher = new TreeCacher&lt;Integer, SysModule&gt;(new ...

    java设计模式【之】享元模式【源码】【场景:多缓存可选模式】

    java设计模式【之】享元模式【源码】【场景:多缓存可选模式】 /** * 享元模式(预加载单例) * “元” 理解为 “同一地址对象” * 运用共享技术,减少对象的创建,降低对象的数量,降低内存消耗,提高性能 * ...

    Integer类的缓存机制

    存在下述例子,判断其输出结果。 public class Main{ public static void main(String[] agrs){ Integer a = 110;...我们知道,在Java中存在基本数据类型和引用数据类型,而Integer作为int的封装类,Integer

    java 整型数与Integer的缓存深入理解

    主要介绍了java 整型数与Integer的缓存深入理解的相关资料,需要的朋友可以参考下

    Integer缓存池案例1

    (1)使用句柄:如果使用句柄访问方式, Java 堆中将会划分出一块内存来作为句柄池,reference 中存储的就是对象的句柄地址,而句柄中包含了对象实例数据

    Java中整型的缓存机制

    本文将介绍Java中Integer的缓存相关知识。这是在Java 5中引入的一个有助于节省内存、提高性能的功能。首先看一个使用Integer的示例代码,从中学习其缓存行为。接着我们将为什么这么实现以及他到底是如何实现的。你能...

    java包装类练习.doc

    在 Java 中,Long 包装类型的常量 cache 机制是指在 -128 到 127 之间的值会被缓存在常量池中,这样可以提高程序的性能和减少内存的使用。当我们创建一个 Long 对象时,如果该值在 -128 到 127 之间,那么 Java 会从...

    cyc学习笔记.pdf

    1、Integer缓存池范围-128~127都是同一个地址,在缓存池范围内赋值不会创建新的对象,且不开辟新内存空间。该缓存池由源码Integer.class中的IntegerCache这个私有静态内部类定义。该缓存池与jvm关系是:缓存池创建...

    GitHub 上标星 115k+ 的 Java 教程.pdf

    该方法会首先检查 IntegerCache 中是否存在对应的Integer对象,如果存在则返回缓存的对象,否则创建一个新的Integer对象。 七、结论 本文总结了 Java 的基础知识点,包括基本数据类型、String 相关知识点、Object ...

    Java常见面试题208道.docx

    面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...

    Java面试题-基础和集合.docx

    其中,讨论了Java为什么不支持多继承、==和equals的区别、方法重载的条件、String为何设计成不可变、包装类的应用场景、Integer的高速缓存机制等多个方面。 通过面试题的逐一解答,读者可以了解到Java语言的一些...

    icarus:使用IoC的Little Java缓存框架-WIP

    Icarus是一个可扩展的缓存框架,旨在通过仅添加一些注释来提高新的或现有的性能。 为什么要使用它? 没有任何框架的纯Java代码: final Map&lt; Integer&gt; cache = Maps . newHashMap(); int sum( final int . .. ...

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

    《深入Java虚拟机(原书第2版)》,原书名《Inside the Java Virtual Machine,Second Edition》,作者:【美】Bill Venners,翻译:曹晓钢、蒋靖,出版社:机械工业出版社,ISBN:7111128052,出版日期:2003 年 9 ...

    java面试题

    Overloaded的方法是否可以改变返回值的类型? 10 12. error和exception有什么区别? 11 13. 同步和异步有何异同,在什么情况下分别使用他们?举例说明。 11 14. 简述synchronized和java.util.concurrent.locks.Lock的...

    java面试宝典

    Overloaded 的方法是否可以改变返回值的类型? 10 27、描述一下JVM 加载class 文件的原理机制? 10 28、char 型变量中能不能存贮一个中文汉字?为什么? 10 29、abstract class 和interface 有什么区别? 10 30、Static ...

    Java面试宝典-经典

    Overloaded的方法是否可以改变返回值的类型? 14 19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否...

    Java面试宝典2010版

    Overloaded的方法是否可以改变返回值的类型? 14 19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否...

Global site tag (gtag.js) - Google Analytics