gaku(SE)の私的な気まぐれアウトプット

技術メモやガジェット、時々趣味についてアウトプットするブログ

Pixel3_開封の儀

はじめに

届いてからだいぶ時間たってしまったし、既に同じような記事もたくさんあるけど練習も兼ねて書いてみます。 少しだけどオリジナリティとして買ってみたケースと保護フィルムの感想も書いてみようと思います。 ※商品の感想はあくまで個人的な感想ですので参考程度に

外装

箱はすごいスベスベしていて高級感ある。

正面 f:id:gaku358:20181112214933j:plainf:id:gaku358:20181112215228j:plain 斜め f:id:gaku358:20181112214737j:plain

内容物

開封f:id:gaku358:20181112215448j:plain

いいですね~。早速本体が目に入ってきます。

本体の下には、Sim取り出し用ピンやイヤホン、充電器、データ以降用ケーブルが入ってます。 f:id:gaku358:20181112220214j:plain

以上が箱の中身です。

本体については基本的に省こうと思います。裏面について少し。 本体の裏面は上下で違う手触りですが、上部は指紋がつきにくいツルツルのガラス、 下部は非常に細かい凹凸の磨りガラスのようになっています。下部ももちろん指紋はつきません。 非常に気持ちの良い手触りです。 消耗品と割り切れる値段ならケースつけずに運用するんですがね…

追加購入品

以下は本体とは別に買ったものについて。

ケース

色々調べましたが、純正ではなくSpigenのケースを買ってみました。

上部はスベスベ、下はザラザラですが、上下とも指紋がつきにくくなっています。 ケースをつけたままActiveEdgeもFelicaもワイヤレス充電Qi(純正でも純正以外でも)も問題なく使えます。

使用して1週間ほどですが全く不満がなく満足しています。

保護ガラスフィルム

ガラスフィルムは今まで使ったことがなかったので直感で以下を選びました。

貼ってみた感想ですが、正直言うと個人的には残念なものでした。

透明度も高く指紋もつきにくかったので、ガラスの質は良いものだと思います。 ただ、Pixel3本体の端が局面になっているせいか、上下左右の4方とも端が浮いてしまいます。 左右はまだ浮いてる部分が狭いのですが、上下が3mmほど本体とくっつかずに浮いているため、 しばらく使っているとホコリが入ったりしそうだし、そもそも浮いてるので非常に気になります。 また、左右も画面の端までカバーできていないため、ガラスフィルムの厚みで端にラインが入ったように見えて気になります。

保護フィルム

さて、ガラスフィルムは個人的には失敗でした。なので、次は昔ながらの柔らかい保護フィルムを買いました。

これは、今の所不満なく使っています。 完全防指紋ではないので指紋など手の油が酷いときはたまに見えますが、基本的には気になりません。
逆に防指紋ではないため、フィルム部分で画面の光が乱反射しないので白がはっきり白に見えます。
(経験上、防指紋は乱反射して白が赤青緑がうっすら見えてしまいます)
また、ガラスではなく柔らかいフィルムなので局面までしっかり張り付いてくれます。

使用して3日ほどですが満足しています。

使用感

最後にPixel3の使用感を簡単に。

処理にもたつきを感じることは当然ながらありません。

ホーム画面のPixelLauncherは基本的なことはできますが、もう少しカスタマイズできたらいいなと思います。

電池持ちは良いのか悪いのかまだよくわかりません。 まぁ一日の途中で充電が必要になることはありませんが、仕事してる平日でも毎日充電は必須ですね。 AI?による自動調整バッテリーという機能で癖を覚えてくれて電池持ちが減るのかな? 今後に期待です。

おわりに

Pixel3が到着したので開封の儀と簡単なレビューを書いてみました。 もっと細かく書いてほしい部分があればコメントいただければ対応したいと思います。 次回は近いうちにPixelStandについて書いてみたいと思います。

Tomcatのメモリチューニング+α

はじめに

Tomcatをサーバ上で運用するときのメモリ割り当てなどの設定に困ったので色々調査してまとめてみました。

TL;DL

以下が今回作成した設定値。

【2018/04/11時点】
-d64
-server
-XX:+UseCompressedOops
-Xms1024m
-Xmx1024m
-XX:NewSize=384m
-XX:MaxNewSize=384m
-XX:MaxMetaspaceSize=256m
-XX:CompressedClassSpaceSize=256m
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:CMSInitiatingOccupancyFraction=70
-XX:+UseParNewGC
-XX:SurvivorRatio=6
-XX:MaxTenuringThreshold=15
-XX:TargetSurvivorRatio=80
-Xloggc:/${CATALINA_BASE}/logs/gc.`date '+%Y-%m-%d'`.log
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-XX:+PrintClassHistogram
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/${CATALINA_BASE}/logs/java.hprof

メモリ空間の使い方

Tomcatを起動すると、以下のようにメモリ空間を確保します。

f:id:gaku358:20181019102738p:plain

領域 説明
サーバ上のメモリ空間 名前の通り。サーバ上の物理メモリの領域。
Javaヒープ Tomcat上で動作するJavaプログラムのリソースを管理する領域。New領域とOld領域で構成される。
New領域 新規オブジェクトと閾値未満のオブジェクトが格納される。
Eden 新規のオブジェクトが格納される。
From CopyGC(ScavengeGC、マイナーGC)が実行されたとき、使用中のオブジェクトはここへコピーされる。Survivorとも呼ばれる。
To CopyGC(ScavengeGC、マイナーGC)が実行されたとき、使用中のオブジェクトはここへコピーされる。Survivorとも呼ばれる。
Old(領域) GC閾値を超えたオブジェクトが格納される。
Nativeメモリ Javaヒープ領域がJVMによって管理される領域に対して、NativeメモリはOSによって管理されるメモリ領域のこと。
Metaspace クラスやメソッドの情報が格納される領域。
Cヒープ Javaスレッドなどのバッファ領域として使用される。
スレッドスタック スレッド毎に保持するスタック領域。命令の順序をスタックする。

※FromとToの違いはGCを参照。

GCガベージコレクション)について

GCとは、プログラムが確保したメモリ領域のうち、不要になった領域を自動的に解放する機能です。 使用できるメモリ領域が少なくなるとCopyGCまたはFullGCのどちらかが実行されます。 CopyGCはEden領域がいっぱいになると発生します。つまりCopy領域の対象はNew領域です。 一方、FullGCは対象がJavaヒープの全領域です。Old領域がいっぱいになると発生します。 CopyGCとFullGCの大きな違いは、GC処理の時間です。CopyGCの場合対象が狭いため、GCが必要になったとしてもGCにかかる時間が少なく、WEBアプリケーションに与える影響が少ないというメリットがあります。

GC 対象領域 所要時間 アプリケーションへの影響 説明
CopyGC New領域 短い 小さい 影響が小さいためある程度なら起こっても問題ない(頻発するのはNG)
FullGC Javaヒープ領域 長い 大きい 処理時間が長いためGC発生は最小限にとどめたい

メモリ割当やその他諸々のオプション設定

上記構造よりメモリ割当を考えていきます。 Javaヒープのメモリ領域は多ければ多いほどいいと考えられますが、無限のメモリを搭載することはできないのでGCが起こることは避けられません。 また、搭載メモリの中で可能な限り大きく領域を確保してしまうと、CopyGCが発生してしまった場合に、処理すべきメモリ量が多くなってしまい、本来の処理時間よりも多くの時間がかかってしまう懸念があります。 よって、中途半端に大きくとるよりも、少量でも適切なメモリ量を設定した方が、システム全体のレスポンスが良くなると考えられます。

上記と詳細仕様(内容は伏せます)より、今回は以下の設定を作成しました。

【2018/04/11時点】
-d64
-server
-XX:+UseCompressedOops
-Xms1024m
-Xmx1024m
-XX:NewSize=384m
-XX:MaxNewSize=384m
-XX:MaxMetaspaceSize=256m
-XX:CompressedClassSpaceSize=256m
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:CMSInitiatingOccupancyFraction=70
-XX:+UseParNewGC
-XX:SurvivorRatio=6
-XX:MaxTenuringThreshold=15
-XX:TargetSurvivorRatio=80
-Xloggc:/${CATALINA_BASE}/logs/gc.`date '+%Y-%m-%d'`.log
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-XX:+PrintClassHistogram
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/${CATALINA_BASE}/logs/java.hprof

※64bitとして動作することや、サーバータイプで動作すること、ログの出力などの設定を追加しています。

Tomcat上のWebアプリケーションから出力されるファイルのPermissionを制御する

やりたいこと

Tomcat上のWebアプリからファイルを作成する際に、Permissionが「-rw-r-----」になり、Tomcat以外のサービスから参照できない状態となっていた。

Tomcatの設定でこのPermissionを変更したい。

Tomcatバージョンは9.x

やり方

/Tomcatインストールフォルダ/bin/catalina.shのumaskの値を変更する。