一个软引用和弱引用的应用场景(JAVA)

发现了一个比较实用的有关软(弱)引用的应用场景。
在用浏览器浏览之前已经访问过的网页时,是从缓存中取,还是重新构建,解决方式如下:

	Browser browser = new Browser();
	//强引用
	Page page = browser.getPage();
	//软引用
	SoftReference<Page> softReferencePage = new SoftReference<>(page);
	
	//将强引用弱化,现在堆中的对象只剩下一个软引用指向它
	page = null;
	
	someThing();
	
	//依据软引用指向对象是否被删除判断怎样重新获取网页
	page = softReferencePage == null ? browser.getPage() : softReferencePage.get();
	
	

用这种思路应该可以有效平衡内存占用和性能问题,如果换成弱引用(或虚引用),则可以进一步优化内存占用,相对而言加载性能则会有所下降。

你可能感兴趣的:(java基础)