Java読書会BOF「Java Memory Management」を読む会 第1回議事録

[ 戻る ]


========================================================
Java読書会BOF「Java Memory Management」を読む会 第1回
========================================================

.. csv-table:: 開催概要

  "日時", "2023年5月20日 10:00 - 17:00"
  "場所", "てくのかわさき 第4研修室"
  "出席者(敬称略)", 根本、平山、高橋(徹)、岩室、高橋(智)(書記)"

Contributors
============
* BSFIとは?
  * Banking, Financial Services and Insurance
  * 金融業界のこと

* DevSecOpsとは?
  * 開発(development),セキュリティー(security),運用(operation)の略

Chapter 1, Different Parts of the Java Memory
=============================================

Memory management before Java
-----------------------------
* P6 C言語のintのサイズは?
  * 16bit, 32bit, 64bitのどれかでOSやコンパイラに依存
  * データ型モデル#ILP64 https://www.wdic.org/w/TECH/%E3%83%87%E3%83%BC%E3%82%BF%E5%9E%8B%E3%83%A2%E3%83%87%E3%83%AB#ILP64
  * Using the ILP64 Interface vs. LP64 Interface https://www.intel.com/content/www/us/en/docs/onemkl/developer-guide-linux/2023-0/using-the-ilp64-interface-vs-lp64-interface.html

The stack
---------
* P10 'own thraed'は'own stack'の誤植
  * packt社のホームページでErrataをsubmitしておきました

The operand stack
-----------------
* P17 Javaの識別子の名前の最大長は?
  * クラス名や変数名は?

Frame data
----------
* P18 javapに渡しているExample.classファイルは、デバッグ情報付きか?
  * javacのオプションを付けないでコンパイルすると、デフォルトでは「-g」は何が指定されたことになるのか?
  * The javac Command https://docs.oracle.com/en/java/javase/17/docs/specs/man/javac.html

* P19 LineNumberTableは、リリースビルドされたclassファイルでも存在するか?
  * コンパイルオプションにより、Example.classの違いをjavapを使って比較する
    * 宿題!!

Values on the stack
-------------------
* P20 Record型(Java17以降)は、クラス型だからスタックには積まれない

Exploring the Metaspace
-----------------------
* P24 Klass(またはklass)のK(またはk)が使われている理由は?
  * 予約語のClass(class)と衝突しないため


Chapter 2, Primitives and Objects in Java Memory
================================================
* P25 'escaping references'と'call-by-value'の関係はP31〜P41の10ページで解説されている

Understanding the differences between references and objects
------------------------------------------------------------
* P29 'driver class'とは?
  * 何かを駆動するという意味だろう
  * Personクラスの他に作成された別クラスということ

* P30 Figure 2.3の27行目と、Figure 2.4のStack(Frame)の状況は間違いではないか?
  * println()とtoString()がStack上に同時に存在するのは変だろう
  * 27行目の動作に関する説明の文章がそもそも間違いだろう
  * javapで確認する
    * 宿題!!

The problem
-----------
* P39 'the code requesting a change'のコードとは?
  * Stringクラスのreplaceメソッドのような、新しいオブジェクトを生成して返すメソッドなど
  * javadocのメソッドの戻り値の説明文が重要になってくる
    * javadocのクラスの説明文に「immutable(不変)」だと書けば簡単で済むのではないか
      * StringクラスやそのreplaceFirstメソッドの戻り値の説明がその良い例

Chapter 3, Zooming in on the Heap Space
=======================================

Garbage collection roots
------------------------
* P44 皆さんが普段から呼び出しているJavaの標準ランタイムメソッドで、nativeなメソッドはあるか?
  * javadocにはnative修飾子が出力されているか?
    * 宿題!!
  * Javaのinterface型のメソッドにはnative修飾子を付けられるのか?
    * 宿題!!

Understanding the minor garbage collection algorithm
----------------------------------------------------
* P46 なぜ'tenuring threshold'の閾値が15までなのか?
  * 16以上は実質上NG!!
  * Javaのオブジェクト構造のヘッダ内情報のサイズの制限と関係しているのでは?
    * 宿題!!

次回は、P46のFigure 3.3から


[ 戻る ]