国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
分析" > 分析
初始化" >初始化
ホームページ Java &#&面接の質(zhì)問 インタビュアー: クラスロードプロセスについて教えてください (10 個の図)

インタビュアー: クラスロードプロセスについて教えてください (10 個の図)

Aug 23, 2023 pm 03:05 PM
Javaの面接の質(zhì)問

##Loading

クラスを使用したいときは、次のことを行う必要があります。 ClassLoader を通じてクラスをメモリにロードします。

「クラスのロード フェーズでは、主に次の 3 つのことを完了します?!?strong style="color: rgb(53, 148, 247);">

  1. クラス全體を通じてクラスを取得します。 name
  2. のバイナリ ストリームは、クラスのバイナリ ストリームを解析し、メソッド領域
    のデータ構造の java.lang.Class クラスのインスタンスを作成します。
  3. . メソッド領域のこのクラスのアクセス エントリとして、このタイプを示します。
インタビュアー: クラスロードプロセスについて教えてください (10 個の図)

"のメソッド完全なクラス名によるクラスのバイナリ ストリームの取得はさまざまです?!?strong style="color: rgb(53, 148, 247);">

  1. zip パッケージから取得します。
  2. Get」ネットワークからのデータ
  3. ##動的プロキシ テクノロジなどのランタイム計算生成
  4. ....
  5. # "非配列型の読み込みフェーズの場合、Java 仮想マシンの組み込みクラス ローダーを使用して完了することも、ユーザー定義のクラス ローダーを使用して完了することもできます「

リンク

「リンクのこの段階は、主に検証、準備、分析の 3 つの部分に分かれています?!?

検証

「検証フェーズの主な目的は、クラス ファイルの形式が正しく、実行時に仮想マシンのセキュリティが危険にさらされないことを確認してください。"

検証フェーズには多くのルールがありますが、大きく分けて次の 4 つがあります。ステージインタビュアー: クラスロードプロセスについて教えてください (10 個の図)「具體的な內(nèi)容については、詳しくは説明しません?!窲ava仮想マシンを深く理解する」を參照してください。この記事は、概要を作成し、全體的なプロセスを把握することを目的としています。詳細については説明せずに、クラスのロードについて説明します。"

準備

「準備フェーズでは主にクラスの靜的変數(shù)にメモリを割り當て、それらをデフォルト値に初期化します?!?/strong>

一般的なデータ型のデフォルト値は次のとおりです

データ型 デフォルト値
バイト (バイト)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d
ブール値 false
char '\u0000'
參照 null

「クラス靜的変數(shù)のフィールド屬性テーブルに ConstantValue 屬性が存在する場合、代入ステートメントは直接実行されます?!?

では、どのような狀況でフィールドが実行されるのかクラスの靜的変數(shù)の屬性テーブルは存在しますか? ConstantValue プロパティはどうですか?

  1. クラス靜的変數(shù)は基本データ型であり、final によって変更されます
  2. クラス靜的変數(shù)は文字列型であり、final によって変更されます、および量の形式のリテラル割り當てです。

クラス ファイルのバイトコードを簡単に表示するために、IDEA にプラグイン jclasslib バイトコード ビューアをダウンロードしました。これは非常に便利です。 。次のコードを使用して、バイトコードの形式で検証します

public class Person {

    private static int age = 10;
    private static final int length = 160;
    private static final String name = "name";
    private static final String loc = new String("loc");
}

インタビュアー: クラスロードプロセスについて教えてください (10 個の図)「したがって、長さと名前の屬性には、準備段階で ConstantValue で指定された値が割り當てられます」

「それでは、age 屬性と loc 屬性はどの段階で割り當てられるのでしょうか? それは初期化段階であり、後で詳しく説明します。」 インタビュアー: クラスロードプロセスについて教えてください (10 個の図)

分析

「クラス、インターフェイス、フィールドの (定數(shù)プール內(nèi)の) シンボリック參照を変換する」およびメソッドを直接參照に追加します。" シンボリック參照: 一連のシンボルを使用して、參照されるターゲットを説明します。 直接參照; ターゲットへの直接ポインタ

參加して次のようなクラスを作成してください

public class Student {

    private String name;
    private int age;

    public String getName() {
        return this.name;
    }
}

インタビュアー: クラスロードプロセスについて教えてください (10 個の図)フィールドを例にとると、名前と年齢に対応するオブジェクトは直接ポイントしません。メモリ アドレスの代わりに、文字列を使用して記述します (つまり、シンボリック參照)。解析段階では、これらの記述をターゲットを直接指すポインター (つまり、直接參照) に変換します。

初始化

「執(zhí)行類靜態(tài)成員變量賦值語句和靜態(tài)代碼塊中的語句」

インタビュアー: クラスロードプロセスについて教えてください (10 個の図)

我們把上面的Student代碼改成如下形式

public class Student {

    private String name;
    private int age = 10;
    private static int gender = 1;

    {
        System.out.println("構造代碼塊");
    }

    static {
        System.out.println("靜態(tài)代碼塊");
    }

    public Student() {
        System.out.println("構造函數(shù)");
    }

    public String getName() {
        return this.name;
    }
}

可以看到字節(jié)碼中包含了3個方法,getName方法我們知道,方法里面執(zhí)行了哪些邏輯?インタビュアー: クラスロードプロセスについて教えてください (10 個の図)從字節(jié)碼的角度分析一波

方法」

インタビュアー: クラスロードプロセスについて教えてください (10 個の図)

從字節(jié)碼可以看到方法的主要邏輯為

  1. 調(diào)用父類的方法
  2. 非靜態(tài)成員變量賦值
  3. 執(zhí)行構造代碼塊
  4. 執(zhí)行構造函數(shù)

インタビュアー: クラスロードプロセスについて教えてください (10 個の図)方法」インタビュアー: クラスロードプロセスについて教えてください (10 個の図)從字節(jié)碼可以看到方法的主要邏輯為

  1. 靜的変數(shù)の代入ステートメントを実行します。
  2. 靜的コード ブロック內(nèi)のステートメントを実行します。
  3. One注意すべき點 はい、 「Java 仮想マシンは、サブクラスの メソッドが実行される前に、親クラスの メソッドが実行されていることを確認します?!?/strong>

# #「面接の質(zhì)問によっては、靜的コード ブロック、構築コード ブロック、コンストラクターの実行順序についてよく尋ねられるため、 メソッドと メソッドの役割を理解することが依然として必要です?!?

ここで結論を直接要約します。デモを書いて検証することができます

##「継承なしの実行シーケンス」

##靜的コード ブロックと靜的メンバー変數(shù)、実行順序は書き込み順序によって決まります (一度だけ実行されます)
  1. コード ブロックと非靜的コード ブロックを構築しますメンバ変數(shù)の場合、実行順序は書き込み順序によって決まります
  2. Constructor
  3. ##「継承を伴う実行順序」

#親クラス static (靜的コード ブロック、靜的メンバー変數(shù))、サブクラスの static (靜的コード ブロック、靜的メンバー変數(shù)) (1 回のみ実行されます)

  1. 親クラスの非靜的 (コンストラクター) コード ブロック、非靜的メンバー変數(shù))、親クラスのコンストラクター
  2. 非靜的サブクラス (構築コード ブロック、非靜的メンバー変數(shù))靜的メンバー変數(shù))、サブクラスのコンストラクター
  3. アンインストール

ガベージ コレクションは、ヒープだけでなくメソッド領域にも含まれます。ただし、メソッド領域の型データを再利用するための條件は比較的厳しいです。下図は一例です。メソッド領域の Simple クラスを再利用したいです。
  1. ヒープ內(nèi)の Sample クラスとそのサブクラスがリサイクルされていることを確認する必要があります
  2. Sample クラスをロードする MyClassLoader がリサイクルされました
  3. Sample クラスに対応する Class オブジェクトがリサイクルされていますインタビュアー: クラスロードプロセスについて教えてください (10 個の図)

メソッド領域に型データのリサイクル條件が設定されていることがわかります。比較的厳密ですが、その影響は最小限であるため、一部のガベージ コレクターはメソッド領域の型データをリサイクルしません

#概要#クラスロード処理

インタビュアー: クラスロードプロセスについて教えてください (10 個の図)変數(shù)代入処理

インタビュアー: クラスロードプロセスについて教えてください (10 個の図)##

以上がインタビュアー: クラスロードプロセスについて教えてください (10 個の図)の詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

インタビュアー: Spring Aop の共通アノテーションと実行シーケンス インタビュアー: Spring Aop の共通アノテーションと実行シーケンス Aug 15, 2023 pm 04:32 PM

Spring について知っている必要があるので、Aop のすべての通知の順序について話しましょう。Spring Boot または Spring Boot 2 は AOP の実行順序にどのように影響しますか? AOP で遭遇した落とし穴について教えてください。

特定のグループへのインタビュー: オンラインで OOM に遭遇した場合、どのようにトラブルシューティングを行うべきですか?の解き方?どのようなオプションがありますか? 特定のグループへのインタビュー: オンラインで OOM に遭遇した場合、どのようにトラブルシューティングを行うべきですか?の解き方?どのようなオプションがありますか? Aug 23, 2023 pm 02:34 PM

OOM は、プログラムに脆弱性があることを意味します。これは、コードまたは JVM パラメータ設定が原因である可能性があります。この記事では、Java プロセスが OOM をトリガーした場合のトラブルシューティング方法について読者に説明します。

Ele.me の筆記試験問題は簡単そうに見えますが、多くの人が困惑します。 Ele.me の筆記試験問題は簡単そうに見えますが、多くの人が困惑します。 Aug 24, 2023 pm 03:29 PM

多くの企業(yè)の筆記試験の問題には落とし穴があり、うっかり陥る可能性がありますので、甘く見ないでください。サイクルに関するこの種の筆記試験問題に遭遇した場合は、冷靜に考えて段階的に解答することをお勧めします。

先週、XX保険の面接を受けましたが、とても良かったです。 ! ! 先週、XX保険の面接を受けましたが、とても良かったです。 ! ! Aug 25, 2023 pm 03:44 PM

「先週、グループの友人が平安保険の面接に行きました。結果は少し殘念でした。非常に殘念ですが、落ち込まないでほしいと思います。あなたが言ったように、基本的には、ここで出た質(zhì)問はすべて解決しました」面接は面接の質(zhì)問を暗記すれば解けますので、頑張ってください!

面接での 5 つの質(zhì)問。すべてに正解できる人は 10% 未満です。 (答え付き) 面接での 5 つの質(zhì)問。すべてに正解できる人は 10% 未満です。 (答え付き) Aug 23, 2023 pm 02:49 PM

この記事では、Java String クラスに関する 5 つの面接の質(zhì)問を取り上げます。私は面接プロセス中にこれら 5 つの質(zhì)問のうちのいくつかを個人的に経験しました。この記事は、これらの質(zhì)問に対する答えがなぜこのようになるのかを理解するのに役立ちます。

初心者も BAT 面接官と競爭できる: CAS 初心者も BAT 面接官と競爭できる: CAS Aug 24, 2023 pm 03:09 PM

Java並行プログラミングシリーズの番外編「C A S (Compare and swap)」は、絵と文章でわかりやすく、インタビュアーと夢中で會話できるスタイルを保っています。

ほぼすべての Java インタビューで聞かれる質(zhì)問: ArrayList と LinkedList の違いについての話 ほぼすべての Java インタビューで聞かれる質(zhì)問: ArrayList と LinkedList の違いについての話 Jul 26, 2023 pm 03:11 PM

Java のデータ構造がインタビューの焦點です。Java のインタビューに參加したことのある人なら誰でも、ある程度の経験があるはずです。面接官がこのような質(zhì)問をするとき、単に「使い方を知っている」というレベルにとどまるのではなく、Java で一般的に使用されるデータ型の基礎となる構造を學習したかどうかを確認したいことがよくあります。

インタビュアー: クラスロードプロセスについて教えてください (10 個の図) インタビュアー: クラスロードプロセスについて教えてください (10 個の図) Aug 23, 2023 pm 03:05 PM

クラスを使用する場合は、ClassLoader を通じてクラスをメモリにロードする必要があります。

See all articles