`

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实现的树以及包含树的内存缓存框架

    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的示例代码,从中学习其缓存行为。接着我们将为什么这么实现以及他到底是如何实现的。你能...

    cyc学习笔记.pdf

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

    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)? 抽象类中是否...

    深入Java虚拟机

    第1章 Java体系结构介绍 1.1 为什么使用Java 1.2 网络带来的挑战和机遇 1.3 体系结构 1.3.1 Java虚拟机 1.3.2 类装载器的体系结构 1.3.3 Java class文件 1.3.4 Java API 1.3.5 Java程序设计...

    javajdk源码解析-Code-Adventure:Java基础、JDK源码解析、程序人生

    java jdk源码解析 :open_book: ​程序猿探险记 Kong子:“学而不思则罔,思而不学则殆。” ...我是程序猿,让我们一起进入Java探险吧! 搜索【程序猿探险记】 订阅Java基础、JDK源码解析系列文章。

    java面试题大全(2012版)

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

Global site tag (gtag.js) - Google Analytics