Java8的一個小缺點
1. java8函數語言程式設計小引言
java8 增加了函式程式設計,函式可以作為引數傳遞,方便之處很多人已經說過了。確實也增加了java的功能,使程式碼更簡潔,可讀性增強。不過,函式式的程式設計相關的問題就來啦,本文從記憶體的洩露問題出發,提出java8中的小問題。
2. 問題程式碼
class Test {
public static void main(String[] args) {
Runnable runnable = new EnterpriseBean()
.runnable();
runnable.run(); // 斷點
}
}
class EnterpriseBean {
Object[] enterpriseStateObject =
new Object[100_000_000];
Runnable runnable() {
return () -> {
// Some harmless debugging here
System.out.println("Hello from: " + this);
};
}
}
關鍵點在於 system.out.println(“Hello from:” + this) 中的this的引用。在斷點處,檢視變數runnable時,會發現還有一個EnterpriseBean的例項。返回的函式體內雖然只有一個輸出,由於帶有this,返回的匿名函式中也就包含了一個EnterpriseBean的例項。這個EnterpriseBean的例項不會被垃圾回收,直到呼叫釋放Runnal後才釋放。
3. 引用
以上發現均來自http://www.importnew.com/17292.html,感謝作者並致敬
相關文章
- JavaScript中的模組匯入有一個缺點JavaScript
- 你對微信小程式的理解?優缺點?微信小程式
- 商業智慧BI的五個優缺點
- 微軟Sharepoint的一些缺點微軟
- Docker的優缺點Docker
- 聊聊HTTP的缺點HTTP
- AngularJS 的缺點AngularJS
- CAP定理的缺點
- 無伺服器計算的5個優點和3個缺點 - TechRepublic伺服器
- 節點快取的優缺點快取
- MyBatis的優缺點以及特點MyBatis
- 繼承的優點和缺點繼承
- Python 的 3 個主要缺點及其解決方案Python
- ReportBuilder存在的一些缺點總結UI
- MySQL索引的優缺點MySql索引
- 在Google工作的缺點Go
- 繼承的優缺點繼承
- mysql和Oracle的特點,優缺點MySqlOracle
- 【Java面試】請說一下Mysql索引的優點和缺點?Java面試MySql索引
- RabbitMQ優缺點MQ
- jQuery的一點小結jQuery
- kafka的優缺點都有那些Kafka
- 關於 Cookie的優缺點Cookie
- 細數共享代理的缺點
- Serverless架構的優缺點Server架構
- 使用css框架的優缺點CSS框架
- 淺談Ajax的優缺點
- 程式設計師的缺點程式設計師
- 雷帕黴素的缺點?
- 分享6個Java框架及優缺點介紹Java框架
- 關於PHP 的一點點小分享PHP
- 面試常問的http的缺點面試HTTP
- HTTPS 優點與缺點HTTP
- 一個關於Struts Action的小框架, 請高手指點一下框架
- 淺談Cookie 缺點Cookie
- Windows、Linux、Unix哪個更好用?優缺點分析!WindowsLinux
- 換個視角深入理解GlusterFS,GlusterFS缺點分析
- 代理伺服器的優缺點伺服器