欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java 進程是如何在Linux服務器上進行內存分配的

 更新時間:2020年11月23日 08:33:32   作者:zhqqqq  
這篇文章主要介紹了java 進程是如何在Linux服務器上進行內存分配的,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下

眾所周知,Java進程在啟動的時候我們可以通過 -Xms 和-Xmx來設置內存的上限和下限。直到我發(fā)現(xiàn)使用top命令監(jiān)控的Java進程在-Xms設置4g的情況下占用的內存并不是4g,這就產(chǎn)生了一個疑問Linux服務器的內存到底是如何進行分配的。

于是乎,我查閱了一些知乎,課程以及Linux相關的書籍。這里分享并記錄的一下相關的知識。

在Linux上運行的進程不僅限于Java。都有一個概念,邏輯內存(Logic Memory),而物理機真是持有的內存,我們稱為 物理內存(Physic Memory)。

進程在開始運行時并不會直接分配物理內存,進程只是傻乎乎的以為自己持有了內存,也就是邏輯內存。當程序運行需要內存分配的時候,Linux服務器會以頁的(Page)至小4k的方式分配,并一對一映射物理內存和邏輯內存的關系,看到了嗎這里其實用了代理的思想是得內存的分配進行了解耦。

這樣做的好處是什么呢? 1進程之間相互隔離 2進程自己認為占有了一段獨立連續(xù)的內存 3可以申請比物理內存更大的內存空間。

第三點怎么理解呢?其實Linux在這里設計了一種機制叫Swap 就是在進程分配的內存空間超過物理內存的時候,如果各個進程運行所占的內存真的有這么多,超過了物理內存就會觸發(fā)Swap,把不持有CPU的部分進程的內存數(shù)據(jù)和磁盤進行io數(shù)據(jù)交換。因為CPU一時間不可能超過所有占有的內存,所以這種優(yōu)化就造就了能多申請一些內存,大概是原來內存的2-3倍,這就很可觀了,畢竟內存是非常貴的。

Swap雖然好,也帶來了一些問題。

比如頻繁的Swap,這會導致內存操作轉化為磁盤的的IO操作,拖慢應用進程的運行速度。所以說Swap在我的理解里屬于可以應急不使進程崩潰,適當使用可以減少成本,過分了不當人的使用就會被反噬的機制。

當然如果太不當人,進程還是會崩潰了,Swap是一個類似Buffer的機制,有大小的。超過設置的上限,Kernel內核就會觸發(fā)OOM Killer,殺死一部分進程騰空間。

以上就是java 進程是如何在Linux服務器上進行內存分配的的詳細內容,更多關于java 進程內存分配的資料請關注腳本之家其它相關文章!

相關文章

  • Spring Boot2.x集成JPA快速開發(fā)的示例代碼

    Spring Boot2.x集成JPA快速開發(fā)的示例代碼

    這篇文章主要介紹了Spring Boot2.x集成JPA快速開發(fā),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • 簡單了解springboot的jar包部署步驟

    簡單了解springboot的jar包部署步驟

    這篇文章主要介紹了springboot的jar包部署步驟解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • 解決Mybatis-plus自定義TypeHandler查詢映射結果一直為null問題

    解決Mybatis-plus自定義TypeHandler查詢映射結果一直為null問題

    這篇文章主要介紹了解決Mybatis-plus自定義TypeHandler查詢映射結果一直為null問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • IntelliJ IDEA 常用設置(配置)吐血整理(首次安裝必需)

    IntelliJ IDEA 常用設置(配置)吐血整理(首次安裝必需)

    這篇文章主要介紹了IntelliJ IDEA 常用設置(配置)吐血整理(首次安裝必需),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Spring Boot 與DBunit 配合使用方法

    Spring Boot 與DBunit 配合使用方法

    這篇文章主要介紹了Spring Boot 與DBunit 配合使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Java字符串拼接詳解

    Java字符串拼接詳解

    大家好,本篇文章主要講的是Java字符串拼接詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • 跟我學Java Swing之游戲設計(2)

    跟我學Java Swing之游戲設計(2)

    跟我學Java Swing之游戲設計(2)...
    2006-12-12
  • 詳解maven的setting配置文件中mirror和repository的區(qū)別

    詳解maven的setting配置文件中mirror和repository的區(qū)別

    這篇文章主要介紹了詳解maven的setting配置文件中mirror和repository的區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • IDEA多線程文件下載插件開發(fā)的步驟詳解

    IDEA多線程文件下載插件開發(fā)的步驟詳解

    這篇文章主要介紹了IDEA多線程文件下載插件開發(fā)的步驟詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Java線程的聯(lián)合用法實例分析

    Java線程的聯(lián)合用法實例分析

    這篇文章主要介紹了Java線程的聯(lián)合用法,結合實例形式分析了java線程聯(lián)合的原理、實現(xiàn)方法及相關操作技巧,需要的朋友可以參考下
    2019-10-10

最新評論