摘要:代碼如果代碼中使用調用本地庫,那本地庫使用的內存也不在堆中。虛擬機和虛擬機和的代碼執行也要消耗一定的內存。
java除了堆和元空間占用內存外,還有哪些區域占用內存?
1. Direct Memory:可以通過-XX:MaxDirectMemorySize調整大小,內存不足時拋出OutMemoryError或OutOfMemory:Direct buffer memory ? 2. 線程堆棧:可通過-Xss調整大小,內存不足時拋出StackOverflowError(縱向無法分配,即無法分配新的棧幀)或OutOfMemoryError:uable to create new native thread(橫向無法分配,即無法建立新的線程) 3. Scoket緩存區:每個Socket連接都有Receive和Send兩個緩存區,分別占大約37KB和25KB的內存,如果連接多的話,這塊內存的占用也比較多,如果無法分配,則可能會拋出IOException:Too many open file異常。 4. JNI代碼:如果代碼中使用JNI調用本地庫,那本地庫使用的內存也不在堆中。 5. 虛擬機和GC:虛擬機和GC的代碼執行也要消耗一定的內存。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75545.html
摘要:那方法區里都存著什么呢先拋結論靜態變量常量類信息構造方法接口定義運行時常量池存在方法區中。動態常量池運行時常量池是方法區的一部分,是一塊內存區域。文件常量池將在類加載后進入方法區的運行時常量池中存放。 一、方法區與永久代 這兩個是非常容易混淆的概念,永久代的對象放在方法區中,就會想當然地認為,方法區就等同于持久代的內存區域。事實上兩者是這樣的關系: 《Java虛擬機規范》只是規定了有方...
摘要:方法區在實際內存空間站可以是不連續的。這一規定,可以說是給了虛擬機廠商很大的自由。但是值得注意的是,堆其實還未每一個線程單獨分配了一塊空間,這部分空間在分配時是線程獨享的,在使用時是線程共享的。 在我的博客中,之前有很多文章介紹過JVM內存結構,相信很多看多我文章的朋友對這部分知識都有一定的了解了。 那么,請大家嘗試著回答一下以下問題: 1、JVM管理的內存結構是怎樣的? 2、不同的...
摘要:內存溢出的情況就是從類加載器加載的時候開始出現的,內存溢出分為兩大類和。以下舉出個內存溢出的情況,并通過實例代碼的方式講解了是如何出現內存溢出的。內存溢出問題描述元空間的溢出,系統會拋出。這樣就會造成棧的內存溢出。 導言: 對于java程序員來說,在虛擬機自動內存管理機制的幫助下,不需要自己實現釋放內存,不容易出現內存泄漏和內存溢出的問題,由虛擬機管理內存這一切看起來非常美好,但是一旦...
摘要:在之后,原來永久代的數據被分到了堆和元空間中。元空間存儲類的元信息,靜態變量和常量池等放入堆中。這樣能在一些場景中顯著提高性能,因為避免了在堆內存和堆外內存來回拷貝數據。 以下內容部分轉載于: CS-Notes showImg(http://ww1.sinaimg.cn/large/005NT19Ply1g385uooqv9j30kd0slmyw.jpg); 程序計數器(Program...
閱讀 1481·2021-11-17 09:33
閱讀 1260·2021-10-11 10:59
閱讀 2892·2021-09-30 09:48
閱讀 1905·2021-09-30 09:47
閱讀 3024·2019-08-30 15:55
閱讀 2337·2019-08-30 15:54
閱讀 1493·2019-08-29 15:25
閱讀 1646·2019-08-29 10:57