1. 程式人生 > >java static 變數 記憶體管理

java static 變數 記憶體管理

3、static

(1)作用:讓靜態資料和靜態方法可以被直接使用,而不必建立任何物件,其中,靜態資料的所有引用都只指向唯一的一個記憶體空間,它們共享同一個資料。也就是說,即使靜態的資料和方法是在類中定義的,事實上它們與這個類的例項是沒有任何關係的。

java記憶體中的方法區,分為靜態區和常量區,靜態區存放static 變數以及方法,常量區存放final修飾常量,字串常量

基本資料型別資料都是在棧中分配空間。

這裡的建立過程只是一個簡單的描述,當類涉及到諸如繼承等情況時,建立過程將更復雜。

 

   JVM中的Class只有滿足以下三個條件,才能被GC回收,也就是該Class被解除安裝(unload):

   - 該類所有的例項都已經被GC,也就是JVM中不存在該Class的任何例項。
   - 載入該類的ClassLoader已經被GC。
   - 該類的java.lang.Class 物件沒有在任何地方被引用,如不能在任何地方通過反射訪問該類的方法.

相關推薦

java static 變數 記憶體管理

3、static (1)作用:讓靜態資料和靜態方法可以被直接使用,而不必建立任何物件,其中,靜態資料的所有引用都只指向唯一的一個記憶體空間,它們共享同一個資料。也就是說,即使靜態的資料和方法是在類中定義的,事實上它們與這個類的例項是沒有任何關係的。 java記憶體中的方法

Java static 變數、方法的什麼時候分配記憶體

Static變數在專案啟動時就分配記憶體,直到程式結束釋放記憶體。 Static方法只有在呼叫的時候才開始分配記憶體,因為static方法肯定在類裡面,並沒有例項化類,所以只有在呼叫static方法的時候才開始分配記憶體。 釋放時分幾種情況: 1.static方法重點額st

Java虛擬機器 記憶體管理與垃圾回收

java和C++之間有一堵由記憶體自動分配與垃圾回收所圍成的高牆,外面的人想進來,裡面的人想出去 主要內容 記憶體分佈 垃圾回收機制 垃圾收集器 Java記憶體分佈 當java虛擬機器執行程式時,會把由虛擬機器管理的記憶體劃分為不同的區域,他們的作用不同,建立和銷燬時間也不同,有的是虛擬

深入淺出 Java 中 JVM 記憶體管理

  Java崗位面試,JVM是對程式設計師基本功考察,通常會問你對JVM瞭解嗎?   可以分幾部分回答這個問題,首先JVM記憶體劃分 | JVM垃圾回收的含義  |  有哪些GC演算法  以及年輕代和老年代各自特點等

Java static變數與程式碼塊

static是用來修飾成員變數和成員方法,也可以形成靜態static程式碼塊。 被static修飾的成員變數和成員方法獨立於該類的任何物件。也就是說,它不依賴類特定的例項,被類的所有例項共享。 只要這個類被載入,Java虛擬機器就能根據類名在執行時資料區的方法區內定找到他們。因此,static物件可以在它

Java虛擬機器-記憶體管理

參考深入理解Java虛擬機器 執行時記憶體包括: 方法區(Method Area) 虛擬機器棧(VM Stack) 本地方法棧(Native Method Stack) 堆(Heap) 程式計數器(Program counter Register) 程式計數器

Java】【JVM】Java中JVM記憶體管理 2018-10-5

Java中JVM記憶體管理 JVM記憶體劃分: ① 方法區 (執行緒共享) 常量 靜態變數 JIT(即時編譯器)編譯後代碼也在方法區存放 ② 堆記憶體(執行緒共享) 垃圾回收的主要場地 ③

高效能Java程式碼之 記憶體管理

http://soft.chinabyte.com/database/8/11981008.shtml     更甚者你寫的程式碼,GC根本就回收不了,直接系統掛掉。GC是一段程式,不是智慧,他只回收他認為的垃圾,而不是回收你認為的垃圾。    GC垃圾回收:    Gr

Java虛擬機器記憶體管理知識總結

0、Java 對記憶體的劃分: Java虛擬機器規範將實體記憶體(主記憶體和CPU中的快取、暫存器)劃分為 程式計數器 、 Java 虛擬機器棧 、 本地方法棧 、 Java 堆 、 方法區 

深入理解java虛擬機器-記憶體管理、異常處理

深入理解Java虛擬機器:JVM高階特性與最佳實踐 閱讀筆記(記憶體原理、異常處理): 1.     Jvm執行時,記憶體劃分如圖所示:   2.     程式計數器:        Jvm將這個計數看作當前執行緒執行某條位元組碼的行數,會根據計數器的值來選取需

java虛擬機器記憶體管理機制(一):JVM記憶體管理總結【分享】

近期看了看Java記憶體洩露的一些案例,跟原來的幾個哥們討論了一下,深入研究發現JVM裡面還是有不少以前不知道的細節,這裡稍微剖析一下。先看一看JVM的內部結構——如圖所示,JVM主要包括兩個子系統和兩個元件。兩個子系統分別是Class loader子系統和Execution

探祕Java虛擬機器——記憶體管理與垃圾回收

本文主要是基於Sun JDK 1.6 Garbage Collector(作者:畢玄)的整理與總結,原文請讀者在網上搜索。 1、Java虛擬機器執行時的資料區 2、常用的記憶體區域調節引數 -Xms:初始堆大小,預設為實體記憶體的1/64(<1GB);預設(MinHeapFreeRatio引數可以調

Java虛擬機器記憶體管理(二)--垃圾收集器及記憶體分配策略

概述     Java記憶體執行時區域的各個部分,其中程式計數器、虛擬機器棧、本地方法棧3個區域隨執行緒而生,隨執行緒而滅;棧中的棧幀隨著方法的進入和退出而有條不紊地執行著出棧和入棧操作。每一個棧幀中分配多少記憶體基本上是在類結構確定下來時就已知的(儘管在執行期會由JIT編

Java static變數儲存在哪?

測試環境: Microsoft Windows [版本 10.0.17134.165] java -version java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_

三、Java虛擬機器自動記憶體管理機制、物件建立及記憶體分配

  1、物件是如何建立: 步驟:    (1)、虛擬機器遇到new <類名>的指令---->根據new的引數是否在常量池中定位一個類的符號引用    (2)、檢測該符號引用代表的類是否已經被載入、解析、和初始化。(如果沒有則

Java】「深入理解Java虛擬機器」學習筆記(2)-記憶體管理

 一、執行時資料區   JVM在執行Java程式的時候,將其執行時資料區劃分為若干不同區域。它們的用途和建立及銷燬的時間不同。      1、程式計數器(Program Counter Register)     是一塊很小的記憶體空間。當執行緒執行的是Java方法,它記錄的是當前正在執行的

Java記憶體管理之類似-Xms、-Xmx 這些引數的含義

Java記憶體管理之類似-Xms、-Xmx 這些引數的含義 答: 1.堆記憶體分配: JVM 初始分配的記憶體由**-Xms** 指定,預設是實體記憶體的 1/64; JVM 最大分配的記憶體由**-Xmx** 指定,預設是實體記憶體的 1/4; 預設空餘

Java記憶體管理之JVM 記憶體劃分

JVM 記憶體劃分 方法區(執行緒共享):常量、靜態變數、JIT(即時編譯器) 編譯後的程式碼也都在方法區; 堆記憶體(執行緒共享):垃圾回收的主要場所; 程式計數器: 當前執行緒執行的位元組碼的位置指示器; 虛擬機器棧(棧記憶體):儲存區域性變數、基本資料

自動記憶體管理機制(1)- java記憶體區域與虛擬機器物件

自動記憶體管理機制(1)- java記憶體區域與虛擬機器物件 1. 執行時資料區域 Java虛擬機器在執行Java程式的過程中會把它所管理的記憶體劃分為若干個不同的資料區域。有的區域隨著虛擬機器進行的啟動而存在,有些區域則以來使用者執行緒的啟動和結束而建立和銷燬。 有以下幾個區域

python垃圾回收機制 Java記憶體管理與垃圾回收

語言的記憶體管理是語言設計的一個重要方面。它是決定語言效能的重要因素。無論是C語言的手工管理,還是Java的垃圾回收,都成為語言最重要的特徵。這裡以Python語言為例子,說明一門動態型別的、面向物件的語言的記憶體管理方式。 物件的記憶體使用 賦值語句是語言最常見的功能了。但即使是最簡單的賦值語句,也可以