學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 電腦硬件知識(shí) > 內(nèi)存知識(shí) > jetty內(nèi)存怎么調(diào)

jetty內(nèi)存怎么調(diào)

時(shí)間: 本達(dá)868 分享

jetty內(nèi)存怎么調(diào)

  很多人會(huì)問jetty內(nèi)存怎么調(diào)?使用內(nèi)存過大怎么辦?下面是學(xué)習(xí)啦小編收集的一個(gè)栗子,大家可以參考一下!

  Jetty使用內(nèi)存過大的解決方案

  之前用Jetty做過一個(gè)消息通知服務(wù)器,主要功能就是其他各個(gè)子系統(tǒng)如果有需要push給客戶端消息的就把這個(gè)消息發(fā)給我的Server,我用WebSocket來推送給客戶端~

  程序上線一段時(shí)間之后運(yùn)維工程師找到我說我的程序占用了16G內(nèi)存,我的個(gè)乖乖,記得設(shè)置Xmx為2G的,為么吃掉了這么大的內(nèi)存呢??!!

  經(jīng)過一番測試,發(fā)現(xiàn)用的并不是應(yīng)用內(nèi)存,而是系統(tǒng)的內(nèi)存,這些內(nèi)存不歸應(yīng)用管,而歸JVM管~~

  jetty使用的是java的nio ,nio在請求分配bytebuffer時(shí)有二種,一種是分配應(yīng)用內(nèi)存,一種是分配系統(tǒng)內(nèi)存~~

  如果是嵌入式的方式啟動(dòng)的Server,加上這么兩行代碼即可。

  SelectChannelConnector conn = new SelectChannelConnector();

  conn.setUseDirectBuffers(false);

  另外,找到Jetty的配置文件,把這個(gè)配置寫在配置文件里也是OK的~

1323517