JVM面試和學習中需要註意的部分

来源:https://www.cnblogs.com/zwy-yjy/archive/2023/05/08/17381946.html
-Advertisement-
Play Games

在學習jvm的時候許多人處於迷茫的狀態,對一些基礎的知識反而聽過就忘了,這篇筆記是我在學習jvm的時候隨手記的一些,適合已經學過或者瞭解過的小伙伴複習回顧一下,當然知識的覆蓋是沒有的,主要記錄了我覺得容易忘記或者記錯的知識點,這些有很多是基石知識,希望大家不要忘記,大家看到就當正好複習一下,對大家的 ...


在學習jvm的時候許多人處於迷茫的狀態,對一些基礎的知識反而聽過就忘了,這篇筆記是我在學習jvm的時候隨手記的一些,適合已經學過或者瞭解過的小伙伴複習回顧一下,當然知識的覆蓋是沒有的,主要記錄了我覺得容易忘記或者記錯的知識點,這些有很多是基石知識,希望大家不要忘記,大家看到就當正好複習一下,對大家的面試可能會有一點小小的幫助

記憶體結構

  • 1.方法區用來存儲類載入的數據,例如類的名稱,方法入口
  • 2.JVM虛擬機棧用於存儲線程,包括局部變數和方法參數
  • 3.堆記憶體用來存儲對象
  • 4.方法區的規範實現:永久代和元空間
  • 5.方法區 JVM棧 堆 都會發生記憶體溢出的問題 程式計數器不會
  • 6.程式計數器用來存儲程式運行到哪裡 因為線程是不斷切換的

垃圾回收演算法

  • 標記清除演算法:會產生大量記憶體碎片,很多虛擬機不再使用
  • 標記整理演算法:適用於老年代的垃圾回收,老年代的無法被回收的對象多,需要被回收的垃圾少,標記整理的效率高
  • 標記複製演算法:適用於新生代的垃圾回收,無法被回收的對象少,標記複製效率高
  • 新生代的垃圾回收:在對新生代進行垃圾回收時,會標記伊甸園區中的被引用的對象將其複製到幸存區的to中,然後將伊甸園的所有對象回收,from和to交換位置,如果一個對象經常被引用,到達一個次數後會晉升老年代
  • 新生代老年代差別:新生代可以頻繁的回收,速度快 老年代應儘量避免,時間較長

類載入

  • 1.類的位元組碼文件保存在方法區,類名.class即類對象保存在堆記憶體中
  • 2.靜態變數屬於類,隨著類的載入而載入,普通成員變數屬於實例對象
  • 3.final修飾的變數在載入鏈接階段就已經賦值,而在此階段靜態變數只被分配了空間,沒有賦值,靜態變數的賦值是在初始化階段完成的
  • 4.在類的初始化階段,靜態代碼塊和靜態變數的賦值是在一個方法中完成的
  • 5.類的載入和初始化都是懶惰的,非必要不載入,例如訪問普通成員變數

Spring框架

Spring_refresh

  • 1.Applicationcontext 是beanfactory 衍生來的用於管理bean
  • 2.spring容器啟動時會創建IOC容器applicationcontext,創建容器時會調用refresh方法,通過這個方法完成bean的創建和初始化
  • 3.Environment 主要用於解析@value註解中的${},#{}
  • 4.applicationcontext內部仍借用了beanfactory的功能
  • 5.Beanfactory 創建和管理bean並不是一瞬間的,需要藉助beandefinition,BeanDefinition來源多種多樣主要有XML,配置類,組件掃描三種
  • 6.通過@configuration註解把一個類聲明為配置類,spring會管理配置類,但是beanfactory無法檢測到配置類中的@bean註解,這時需要一個後處理器postprocess 幫助beanfinition識別@bean
  • 7.通過@component 或者其他註解 將一個類聲明為受spring管理的bean spring會通過組件掃描的方式獲取這個bean
  • 8.Bean的後處理器 用於解析註解例如@Autowired @Resource@Value
  • 9.Refresh完成的最後會將beanfinitionmap中的bean放到singletonobjects單例池中,對象創建有三個不同階段,每個階段都有不同的bean後處理器參與進來

Spring_bean

1.bean的生命周期 通過refresh方法可以獲取singleton中的單例對象,通過getbean方法獲取bean 多例對象需要手動getbean
2.依賴註入的優先順序@autowired最低 其次是按名稱匹配AUTOWIRE_BY_NAME 優先順序最高的是精確指定註入bean


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 3.1一個簡單的Java語言程式 這是程式雖然很簡單,但是所有的Java程式都具有這種結構,因此還是值得花一些時間來研究的。首先,Java區分大小寫。如果出現了大小寫拼寫錯誤(例如:將main拼寫成Main),程式將無法運行。 下麵逐行的查看這段源代碼。關鍵字pubilc稱為訪問修飾符(access ...
  • 基於Java的簡單圖書館管理系統實現,圖書租借管理系統,租借系統,springboot圖書館管理系統,大學圖書管理系統,圖書借閱系統,圖書館借閱歸還系統。 ...
  • 主用python做項目有一段時間,這次簡單總結學習下。為後面的項目編寫,進行一次基礎知識的查缺補漏、 1、變數名和數據類型 """ 變數名,只能由" 數字、大小寫字母、_ " 組成,且不能以數字開頭 """ # 整數 int # hashable,不可變對象 a = 5 # 浮點數 float # ...
  • Python有一個全球社區:https://pypi.org/,在這裡我們可以搜索任何主題的Python第三方庫。PyPI全稱是Python Package Index,指的是Python包的索引,它由PSF(Python Software Foundation)來維護,並且展示全球Python計算 ...
  • 聲明 本文章中所有內容僅供學習交流使用,不用於其他任何目的,不提供完整代碼,抓包內容、敏感網址、數據介面等均已做脫敏處理,嚴禁用於商業用途和非法用途,否則由此產生的一切後果均與作者無關! 本文章未經許可禁止轉載,禁止任何修改後二次傳播,擅自使用本文講解的技術而導致的任何意外,作者均不負責,若有侵權, ...
  • ElasticSearch 分詞器 作者: 博學谷狂野架構師 GitHub:GitHub地址 (有我精心準備的130本電子書PDF) 只分享乾貨、不吹水,讓我們一起加油!😄 概述 分詞器的主要作用將用戶輸入的一段文本,按照一定邏輯,分析成多個詞語的一種工具 什麼是分詞器 顧名思義,文本分析就是把全 ...
  • Scala學習總結 一、Scala簡介 Scala特點: Scala 是一門多範式 (multi-paradigm) 的編程語言 ,設計初衷是要集成面向對象編程和函數式編程的各種 特性。 Scala 是一門以 java 虛擬機 (JVM) 為運行環境的編程語言 ,Scala 源代碼(.scala)會 ...
  • 基於java的小區物業管理系統實現,智慧社區管理,住宅小區的日常管理,物業管理平臺,智慧小區管理平臺實現,科技園物業管理。業主管理平臺,小區業主信息,物業信息化管理平臺。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...