最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java集合ArrayList、LinkedList、HashMap、HashSet最大容量

 更新時(shí)間:2023年12月25日 14:37:32   作者:心流時(shí)間  
在開(kāi)發(fā)中我們使用比較多的集合就是List、Set和Map了,并且我們也知道大部分用的基本上都是ArrayList、LinkedList、HashMap、HashSet或者TreeSet這幾個(gè)集合,你知道他們的最大容量,感興趣的可以了解一下

1. 堆棧都溢出了,集合再大又有什么用

首先要保證不能棧溢出(StackOverflowError)、內(nèi)存溢出OutOfMemoryError

默認(rèn)最大堆大小1GB,默認(rèn)最大棧大小1MB(只是一個(gè)虛擬機(jī)棧,就是一個(gè)線程,就是一次http請(qǐng)求)

  • 32位的JVM上,物理內(nèi)存小于192MB時(shí),為物理內(nèi)存的一半;物理內(nèi)存大于192MB且小于4GB時(shí),為物理內(nèi)存的四分之一;大于等于4GB時(shí),都為1GB
  • 64位的JVM上,物理內(nèi)存小于192MB時(shí),為物理內(nèi)存的一半;物理內(nèi)存大192MB且小于128GB時(shí),為物理內(nèi)存的四分之一;大于等于128GB時(shí),都為32GB

比如4G內(nèi)存,默認(rèn)最大堆內(nèi)存是1G

可以通過(guò)JVM啟動(dòng)參數(shù)控制:

-Xms設(shè)置堆的最小空間大小。
-Xmx設(shè)置堆的最大空間大小。
-XX:NewSize設(shè)置新生代最小空間大小。
-XX:MaxNewSize設(shè)置新生代最大空間大小。
-XX:PermSize設(shè)置永久代最小空間大小。
-XX:MaxPermSize設(shè)置永久代最大空間大小。
-Xss設(shè)置每個(gè)線程的堆棧大小。

1.1 StackOverflowError觸發(fā)場(chǎng)景

在這里插入圖片描述

嘰里呱啦

導(dǎo)致StackOverflowError的原因

如上圖,一個(gè)線程開(kāi)啟一個(gè)虛擬機(jī)棧,虛擬機(jī)棧的大小有限制,默認(rèn)是1024kb=1mb,也就是說(shuō)一個(gè)線程的最大棧大小是1mb,
而,方法數(shù)對(duì)應(yīng)著棧幀數(shù),棧幀占的內(nèi)存越多,能達(dá)到的最大棧深度也就越小。

java虛擬機(jī)棧是線程私有的,它的生命周期與線程相同。虛擬機(jī)棧描述的是java方法執(zhí)行的線程內(nèi)存模型,每個(gè)方法被執(zhí)行的時(shí)候,java虛擬機(jī)都會(huì)同步創(chuàng)建一個(gè)棧幀用于存儲(chǔ)局部變量表、操作數(shù)棧、動(dòng)態(tài)連接、方法返回地址等信息。每一個(gè)方法被調(diào)用直至執(zhí)行完畢的過(guò)程,就對(duì)應(yīng)著一個(gè)棧幀在虛擬機(jī)中從入棧到出棧的過(guò)程。

  • 每個(gè)線程都有自己的棧,棧中的數(shù)據(jù)都是以棧幀(Stack Frame)的格式存在。

  • 在這個(gè)線程上正在執(zhí)行的每個(gè)方法都各自對(duì)應(yīng)一個(gè)棧幀(Stack Frame)。

  • 棧幀是一個(gè)內(nèi)存區(qū)塊,是一個(gè)數(shù)據(jù)集,維系著方法執(zhí)行過(guò)程中的各種數(shù)據(jù)信息。

  • 設(shè)置棧內(nèi)存大小
    我們可以使用參數(shù)-Xss選項(xiàng)來(lái)設(shè)置線程的最大??臻g,棧的大小直接決定了函數(shù)調(diào)用的最大可達(dá)深度。如果程序使用了很深的遞歸函數(shù),而棧內(nèi)存又非常小,此時(shí)很有可能發(fā)生棧溢出(java.lang.StackOverflowError)的情況。
    每一個(gè)線程都有獨(dú)立的??臻g。如果想盡量多跑一些線程的話,就盡量將棧內(nèi)存縮小,而不是增大。
    設(shè)置單個(gè)線程棧大小,一般默認(rèn)1024kb。單個(gè)線程棧大小跟操作系統(tǒng)和JDK版本都有關(guān)系 -Xss = -XX:ThreadStackSize。

棧溢出主要在兩點(diǎn)

  • 一是棧深度的限制,比如不加約束的遞歸就會(huì)造成棧溢出,一個(gè)方法就是一個(gè)棧幀,棧由棧幀組成,也就是說(shuō)方法越多,棧的深度越深,那么棧的最大深度到底是多少呢,這個(gè)又由棧幀的大小影響,棧幀越大,棧的最大深度越小。
  • 二是棧的內(nèi)存大小不能超過(guò)最大棧大小,默認(rèn)是1mb,注意這里是單個(gè)線程的限制

總結(jié):方法小,局部變量小,棧幀就小,棧最大深度就更深,棧幀出棧也就更快,對(duì)象的引用更早消失,對(duì)象更早可能被回收。

1.2 OutOfMemoryError觸發(fā)場(chǎng)景

  • 靜態(tài)集合:類在集合就一直在,導(dǎo)致集合中的對(duì)象一直被引用,而不會(huì)像方法中的局部變量一樣,隨著方法運(yùn)行完,棧幀彈出,局部變量消失,對(duì)象失去引用可以對(duì)gc回收,靜態(tài)集合對(duì)應(yīng)的對(duì)象無(wú)法回收容易引發(fā)內(nèi)存溢出

2. tomcat都處理不過(guò)來(lái)了集合再大又有什么用

2.1 tomcat連接配置

SpringBoot開(kāi)發(fā)最大的好處是簡(jiǎn)化配置,內(nèi)置了Tomcat, 在SpringBoot2.0.x版本中內(nèi)置Tomcat版本是8.5.x,SpringBoot內(nèi)置Tomcat的默認(rèn)設(shè)置中,Tomcat的等待隊(duì)列長(zhǎng)度默認(rèn)是100,Tomcat的最小工作線程數(shù)默認(rèn)分配10,Tomcat的最大線程數(shù)是200,最大連接數(shù)是10000,至于最大并發(fā)量和最大連接數(shù),常常理解成最大并發(fā)量就是最大連接數(shù),實(shí)際上是有些牽強(qiáng)的,最大連接數(shù)并不一定就是最大并發(fā)量。

  • 默認(rèn)最大連接數(shù)maxConnections = 10000
  • 默認(rèn)隊(duì)列長(zhǎng)度acceptCount = 100
  • 默認(rèn)最大工作線程數(shù)maxThreads = 200
  • 默認(rèn)最小工作線程數(shù) minSpareThreads = 10

2.2 tomcat報(bào)文大小配置

在application.yml中,可以使用以下配置來(lái)設(shè)置響應(yīng)報(bào)文最大值(據(jù)說(shuō)默認(rèn)是2mb):

server:
  tomcat:
    max-http-header-size: 4048576
spring:
  servlet:
    multipart:
      enabled: true
      max-file-size: 1000MB
      max-request-size: 1000MB

springboot默認(rèn)請(qǐng)求最大值可以通過(guò)配置文件進(jìn)行設(shè)置。在springboot應(yīng)用中,tomcat的默認(rèn)配置文件是spring-configuration-metadata.json,它位于spring-boot-autoconfigure-版本號(hào).jar這個(gè)包下面。在該配置文件中,可以找到關(guān)于tomcat的默認(rèn)配置參數(shù)。
其中,最大連接數(shù)的配置參數(shù)為server.tomcat.max-connections,默認(rèn)值為10000。該參數(shù)表示在任何給定時(shí)間,tomcat服務(wù)器可以接受和處理的最大連接數(shù)。
另外,請(qǐng)求正文的大小的默認(rèn)最大值為2MB,可以通過(guò)配置參數(shù)server.tomcat.max-http-form-post-size進(jìn)行設(shè)置。默認(rèn)值為2MB。如果要取消對(duì)請(qǐng)求正文大小的限制,可以將該值設(shè)置為-1。
所以,springboot默認(rèn)請(qǐng)求最大值的配置參數(shù)如下:
最大連接數(shù):server.tomcat.max-connections,默認(rèn)值為10000。
請(qǐng)求正文大?。簊erver.tomcat.max-http-form-post-size,默認(rèn)值為2MB。

3. 終于到正文了,集合到底size最大是多少

ArrayList:底層是數(shù)組,最大size是int的最大值,21億多

在這里插入圖片描述

LinkedList:底層是雙向鏈表,最大可以無(wú)限大

HashMap、HashSet:HashSet的就是HashMap實(shí)現(xiàn)的,底層是數(shù)組、單向鏈表或紅黑樹(shù),這倆最大size一樣,也是int的最大值,21億多

在這里插入圖片描述

在這里插入圖片描述

到此這篇關(guān)于Java集合ArrayList、LinkedList、HashMap、HashSet最大容量的文章就介紹到這了,更多相關(guān)Java集合最大容量?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • IDEA中g(shù)it對(duì)于指定文件進(jìn)行版本控制的全過(guò)程

    IDEA中g(shù)it對(duì)于指定文件進(jìn)行版本控制的全過(guò)程

    用戶在IDEA中遇到默認(rèn)提交所有修改的問(wèn)題,通過(guò)配置.gitignore和.git/info/exclude忽略特定文件,并利用vcs.xml指定版本控制范圍,實(shí)現(xiàn)精準(zhǔn)版本管理,本文通過(guò)圖文給大家介紹了IDEA中g(shù)it對(duì)于指定文件進(jìn)行版本控制的全過(guò)程,需要的朋友可以參考下
    2025-05-05
  • java中hibernate二級(jí)緩存詳解

    java中hibernate二級(jí)緩存詳解

    本篇文章中主要介紹了java中hibernate二級(jí)緩存詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • spring boot使用logback實(shí)現(xiàn)多環(huán)境日志配置詳解

    spring boot使用logback實(shí)現(xiàn)多環(huán)境日志配置詳解

    這篇文章主要介紹了spring boot使用logback實(shí)現(xiàn)多環(huán)境日志配置詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Spring注解驅(qū)動(dòng)之ApplicationListener異步處理事件說(shuō)明

    Spring注解驅(qū)動(dòng)之ApplicationListener異步處理事件說(shuō)明

    這篇文章主要介紹了Spring注解驅(qū)動(dòng)之ApplicationListener異步處理事件說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Java transient 關(guān)鍵字詳解及實(shí)例代碼

    Java transient 關(guān)鍵字詳解及實(shí)例代碼

    本文章向大家介紹Java transient關(guān)鍵字的使用方法和實(shí)例,包括的知識(shí)點(diǎn)有transient的作用、transient使用小結(jié)、transient使用細(xì)節(jié),需要的朋友可以參考一下
    2016-12-12
  • Java中一維二維數(shù)組的靜態(tài)和動(dòng)態(tài)初始化

    Java中一維二維數(shù)組的靜態(tài)和動(dòng)態(tài)初始化

    今天通過(guò)本文給大家分享Java中的數(shù)組,包括一維數(shù)組和二維數(shù)組的靜態(tài)初始化和動(dòng)態(tài)初始化問(wèn)題,感興趣的朋友一起看看吧
    2017-10-10
  • RocketMQ?producer發(fā)送者淺析

    RocketMQ?producer發(fā)送者淺析

    RocketMQ生產(chǎn)者是一種高性能、可靠的消息發(fā)送者,能夠?qū)⑾⒖焖?、可靠地發(fā)送到RocketMQ消息隊(duì)列中。它具有多種消息發(fā)送模式和消息發(fā)送方式,可以根據(jù)不同的業(yè)務(wù)需求進(jìn)行靈活配置
    2023-04-04
  • java獲取文件大小的幾種方法

    java獲取文件大小的幾種方法

    這篇文章主要介紹了java獲取文件大小的幾種方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • java裁剪圖片并保存的示例分享

    java裁剪圖片并保存的示例分享

    在這篇文章中我們將學(xué)習(xí)如何用Java 對(duì)圖像進(jìn)行剪裁并將剪裁出來(lái)的部分單獨(dú)保存到文件中
    2014-01-01
  • 關(guān)于spring中單例Bean引用原型Bean產(chǎn)生的問(wèn)題及解決

    關(guān)于spring中單例Bean引用原型Bean產(chǎn)生的問(wèn)題及解決

    這篇文章主要介紹了關(guān)于spring中單例Bean引用原型Bean產(chǎn)生的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評(píng)論

河北省| 那曲县| 措美县| 湖州市| 四川省| 峨山| 沧州市| 宁远县| 株洲市| 沙洋县| 潮州市| 沂源县| 清新县| 蒙城县| 贵州省| 福泉市| 喜德县| 崇阳县| 芜湖市| 丽水市| 长阳| 左贡县| 南平市| 青神县| 孟州市| 兴化市| 彩票| 资源县| 梨树县| 类乌齐县| 合江县| 盐城市| 班玛县| 巫溪县| 辛集市| 冷水江市| 溆浦县| 五家渠市| 东阳市| 阳朔县| 满城县|