日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

JavaFX技巧23:节省内存! 属性的阴影场

發布時間:2023/12/3 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaFX技巧23:节省内存! 属性的阴影场 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java 8中引入的屬性和屬性綁定是非常有用的編程概念。 當您開發用戶界面時,它們特別有用。 實際上,它們是如此有用,以至于開發人員成為所有事物都應該是屬性而不是原始屬性的想法的受害者。 不幸的是,他們很容易忘記,諸如SimpleLongProperty之類的屬性比諸如Long的標準類型要大得多。 當然,它們比諸如long的原始數據類型大得多。

在我當前的項目之一中,客戶端使用的每個模型對象幾乎都是由屬性組成的。 對于許多這些模型對象,這是正確的方法,因為它們將通過JavaFX控件進行編輯/修改。 但是,還有許多未編輯的模型對象。 它們的存在是為了支持FlexGanttFX控件中計劃的呈現。 這些對象不需要被觀察,因此它們不需要提供屬性……但是它們卻這樣做了,因為這樣做,它們浪費了很多內存。

解決此問題的一種方法是重構模型類并擺脫所有屬性,但是同樣,我們可能想在以后的發行版中的不同上下文中使用這些對象,然后可能需要屬性,因為我們要編輯它們直。 該怎么辦?

暗影場

解決這個問題的方法是我最近看到Gerrit Grunwald在其Medusa項目的代碼中所做的事情,以及Properties先生本人Michael Heinrichs 描述的一種模式 。 該模式使用的“影子字段”與屬性中包裝對象的類型相同。 使用此模式時,僅在確實需要時才創建屬性(“有人請求時”)。

在此示例中,我們要管理一個名為“ title”的屬性。 我們需要一個setter,一個getter和屬性訪問器。

private String _title = "Untitled"; // shadow fieldprivate StringProperty title;public final String getTitle() {title == null ? return _title : title.get(); }public final void setTitle(String newTitle) {if (title == null) {_title = newTitle;} else {title.set(newTitle);} }public final StringProperty titleProperty() {if (title == null) {/// !!!! pass shadow field to constructortitle = new StringProperty(this, "title", _title); ?}return title; }

通過使用這種模式,我可以將項目中特定用例的內存占用空間從310 MB減少到250 MB。 保存的內存是我學生時計算機總內存的十倍。 想想看!

翻譯自: https://www.javacodegeeks.com/2016/03/javafx-tip-23-save-memory-shadow-fields-properties.html

總結

以上是生活随笔為你收集整理的JavaFX技巧23:节省内存! 属性的阴影场的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。