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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Grizzly 内存管理

發布時間:2024/3/24 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Grizzly 内存管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內存管理概述

Grizzly 2.0引入了一個新的子系統,以改善運行時的內存管理。該子系統由三個主要工件組成:

  • 緩沖區 Buffers
  • 線程本地內存池 Thread local memory pools
  • MemoryManager, 作為工廠按序使用緩沖區和線程本地池

其主要目的是加快內存分配,并在可能的情況下提供內存重用。
以下各節將詳細描述這些概念。

MemoryManager

MemoryManager 是分配和取消已經分配的 Buffer instance的主要接口:

package org.glassfish.grizzly.memory;import org.glassfish.grizzly.Buffer; import org.glassfish.grizzly.monitoring.MonitoringAware;/*** <tt>MemoryManager</tt>, responsible for allocating and releasing memory,* required during application runtime.* <tt>MemoryManager</tt> implementations work with Grizzly {@link Buffer}s.** @see Buffer** @author Alexey Stashok*/ public interface MemoryManager<E extends Buffer>extends MonitoringAware<MemoryProbe> {/*** <p>* The default {@link MemoryManager} implementation used by all created builder* instances.* </p>** <p>* The default may be changed by one of two methods:* <ul>* <li>* Setting the system property {@value MemoryManagerInitializer#DMM_PROP_NAME}* with the fully qualified name of the class that implements the* MemoryManager interface. Note that this class must be public and* have a public no-arg constructor.* </li>* <li>* Setting the system property {@value DefaultMemoryManagerFactory#DMMF_PROP_NAME}* with the fully qualified name of the class that implements the* {@link org.glassfish.grizzly.memory.DefaultMemoryManagerFactory} interface.* Note that this class must be public and have a public no-arg* constructor.* </li>* </ul>** </p>*/MemoryManager DEFAULT_MEMORY_MANAGER =MemoryManagerInitializer.initManager();/*** Allocated {@link Buffer} of the required size.** @param size {@link Buffer} size to be allocated.* @return allocated {@link Buffer}.*/E allocate(int size);/*** Allocated {@link Buffer} at least of the provided size.* This could be useful for usecases like Socket.read(...), where* we're not sure how many bytes are available, but want to read as* much as possible.** @param size the min {@link Buffer} size to be allocated.* @return allocated {@link Buffer}.*/E allocateAtLeast(int size);/*** Reallocate {@link Buffer} to a required size.* Implementation may choose the way, how reallocation could be done, either* by allocating new {@link Buffer} of required size and copying old* {@link Buffer} content there, or perform more complex logic related to* memory pooling etc.** @param oldBuffer old {@link Buffer} to be reallocated.* @param newSize new {@link Buffer} required size.* @return reallocated {@link Buffer}.*/E reallocate(E oldBuffer, int newSize);/*** Release {@link Buffer}.* Implementation may ignore releasing and let JVM Garbage collector to take* care about the {@link Buffer}, or return {@link Buffer} to pool, in case* of more complex <tt>MemoryManager</tt> implementation.** @param buffer {@link Buffer} to be released.*/void release(E buffer);/*** Return <tt>true</tt> if next {@link #allocate(int)} or {@link #allocateAtLeast(int)} call,* made in the current thread for the given memory size, going to return a {@link Buffer} based* on direct {@link java.nio.ByteBuffer}, or <tt>false</tt> otherwise.* * @param size* @return */boolean willAllocateDirect(int size); }

通常只有一個MemoryManager服務于Grizzly運行時中定義的所有傳輸。可以通過引用MemoryManager接口的靜態成員來獲得此MemoryManager:

MemoryManager DEFAULT_MEMORY_MANAGER = MemoryManagerInitializer.initManager();

然而,可以通過定義系統屬性org.glassfish.grizzly.DEFAULT_MEMORY_MANAGER來定義自定義MemoryManager實現,作為默認的MemoryManager,
該系統屬性引用要使用的MemoryManager實現的完全限定的類名。請注意,此實現必須具有公共的無參數構造函數,以便運行時正確設置新的默認值。

Grizzly 2.3包含兩個MemoryManager實現:HeapMemoryManager和ByteBufferManager。默認情況下,Grizzly運行時將使用HeapMemoryManager,
但是,如果Grizzly應用程序需要直接ByteBuffer訪問,則可以使用ByteBufferManager。

ByteBufferManager

該ByteBufferManager實施VENDS grizzly 緩沖實例那套JDK的ByteBuffer實例。如果Grizzly應用程序需要直接使用ByteBuffer,則使用此MemoryManager。
應該注意的是,在進行基準測試期間,此 MemoryManager 通常在使用堆緩沖區時需要更多的開銷。因此,如果不需要直接讀取內存,我們建議使用默認的HeapMemoryManager。

HeapMemoryManager

HeapMemoryManager 是默認的 MemoryManager。代替包裝 ByteBuffer 實例,此 MemoryManager 將分配直接包裝字節數組的Buffer實例。
此 MemoryManager 為 trimming 或 splitting 之類的操作提供更好的性能特征。

ThreadLocal Memory Pools

ThreadLocal 內存池提供了無需任何同步成本即可分配內存的功能。無論是 ByteBufferManager 和 HeapMemoryManager 使用這些池。請注意,
不需要自定義 MemoryManager 使用此類池,但是,如果該 MemoryManager 實現 ThreadLocalPoolProvider 接口,則必須提供 ThreadLocalPool 實現。
該 ThreadLocalPool 執行將被創建并傳遞給每個通過 Grizzly 管理維持的線程。

Memory Manager and ThreadLocal Memory Pools Working Together

以下提供了使用ThreadLocalPool向MemoryManager分配請求通常如何工作的流程圖:

緩沖區 Buffers

Grizzly 2.3提供了一些緩沖區,供開發人員在創建應用程序時使用。這些Buffer實現一些功能,這些功能是使用JDK的ByteBuffer時沒有的。

Buffer

該緩沖器本質上是模擬到JDK的字節緩沖區。它提供了以下相同的方法集:

  • 向 Buffer 推入/拉出 (pushing/pulling) 數據。
  • 用于訪問或操縱緩沖區的位置(position),限制(limit)和容量(capacity)的方法。

除了為ByteBuffer提供熟悉的語義外,還提供以下功能:

  • 分割,修剪和縮小。 splitting, trimming and shrinking
  • 在當前緩沖區之前添加另一個緩沖區的內容。 Prepending another Buffer’s content to the current Buffer.
  • 將緩沖區轉換為ByteBuffer或ByteBuffer []。 Converting the Buffer to a ByteBuffer or ByteBuffer[].
  • 將緩沖區內容轉換為字符串。 Converting Buffer content to a String.

請參閱javadocs以獲取有關Buffer的更多詳細信息。

CompositeBuffer

該CompositeBuffer是另一個緩沖區實現它允許附加的緩沖實例。所述CompositeBuffer維護虛擬位置,限制和基于容量緩沖器已所附和可以被視為簡單的緩沖液的實例。
有關CompositeBuffer的更多詳細信息,請參見javadocs 。

總結

以上是生活随笔為你收集整理的Grizzly 内存管理的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲精品一区在线 | 另类视频在线观看 | 色悠悠av| 蜜美杏av | 四虎精品| 奶罩不戴乳罩邻居hd播放 | 国产欧美一区二区三区视频 | 少妇真实被内射视频三四区 | av夜夜| 波多野结衣一区二区三区在线观看 | 九九九精品视频 | 天堂精品 | 日韩一区二区视频在线播放 | 国产视频一区二区三区在线观看 | 性色av一区二区三区免费 | 黄色一级免费网站 | 97色伦97色伦国产欧美空 | 色婷婷av一区二区三区之红樱桃 | 色插综合 | 91最新入口 | 国产女人18毛片水18精 | 日欧视频| 91网站在线播放 | jizz18欧美18| 国产男女精品 | 人妻天天爽夜夜爽一区二区三区 | 97久草 | 五月开心网 | 久久激情婷婷 | 国产113页 | 国产毛片一区二区三区va在线 | wwwwxxxxx日本| av色资源| 国模无码视频一区 | 黄色网址进入 | av手机在线免费观看 | 欧美一区二区三区久久 | 日韩一区二区三区视频在线 | 黑人极品videos精品欧美裸 | 无码国内精品人妻少妇蜜桃视频 | 曰本毛片| 啪啪五月天 | 免费看欧美一级特黄a大片 国产免费的av | 日本青草视频 | 69国产精品视频 | 久久久www免费人成人片 | 国产麻豆精品久久一二三 | 爱爱福利社 | 欧美日韩色视频 | 麻豆小视频 | 丝袜老师扒开让我了一夜漫画 | 国产人免费人成免费视频 | 在线免费黄色片 | www.夜夜操.com | 亚欧成人精品 | 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 男人的天堂成人 | 日本少妇aaa| 国产精品成人免费精品自在线观看 | 亚洲在线中文字幕 | 青草精品在线 | 欧美第十页 | 亚洲精品久久久中文字幕 | 成人毛片18女人毛片免费 | 欧美三级韩国三级日本三斤在线观看 | 婷婷色在线观看 | 姝姝窝人体www聚色窝 | 日本高潮网站 | 香蕉久久精品日日躁夜夜躁 | 爱爱福利社 | 波多野结衣免费看 | 在线视频福利 | 超碰av在线 | 久久久久久久久黄色 | 日韩图片一区 | 91在线第一页 | aaaaaabbbbbb毛片| jizz中国女人 | 精品国产一区二区三区日日嗨 | 久久久久久一区二区 | 99re在线视频播放 | 美女黄视频大全 | 午夜黄色在线 | 91国模 | 欧美日本二区 | 银杏av | 日本wwwxxx | 久久精品综合网 | 欧洲成人在线视频 | 国产精品人人妻人人爽人人牛 | 久久久精品中文字幕 | 欧美男优| 欧美极品jizzhd欧美仙踪林 | 日韩在线观看第一页 | 日本中文字幕成人 | 国产白丝袜美女久久久久 | 亚洲欧洲一级 | 日本亚洲视频 | 国产探花在线观看 |