補足: http://techlog.mvrck.co.jp/entry/todesking-runtime-jvm-bytecode-optimization/
![実行時におけるJVMバイトコード最適化手法](https://cdn-ak-scissors.b.st-hatena.com/image/square/0d45e824f2192bf1d12a81c4c3e3804059821dde/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F579cd4fde36e40e980e7171bacee4943%2Fslide_0.jpg%3F6046027)
システムの処理性能を高めるには,基盤となるJavaVM自体のチューニングを適切に実施する必要があります。日立のJavaVMでは,2種類のメモリ空間を管理しています。 この章では,ガーベージコレクションと日立のJavaVMでのメモリ管理,およびJavaヒープとExplicitヒープのチューニングについて説明します。 <この章の構成> 7.1 ガーベージコレクションとJavaVMのメモリ管理の概要 7.2 フルガーベージコレクション発生を抑止するためのチューニングの概要 7.3 Javaヒープのチューニング 7.4 Javaヒープ内のTenured領域のメモリサイズの見積もり 7.5 Javaヒープ内のNew領域のメモリサイズの見積もり 7.6 Javaヒープ内に一定期間存在するオブジェクトの扱いの検討 7.7 Javaヒープの最大サイズ/初期サイズの決定 7.8 Javaヒープ内のPerma
ドイツ人数学者、Gottlob Frege氏から名付けられたFregeは、JVMのための純粋関数型の強力な型付き言語だ。FregeはHaskellと似ていて、「もっともHaskellらしいコードを修正せずに、または、見て分かる最小限の調整だけで動かせる。」 Fregeの開発者たちによると、Fregeは「パワー、単純さ、表現力の豊かさの組み合わせにおいて、類を見ないもの」である型システムをJVMに持ち込んだ。これにより、非正格 評価と型推論をサポートし、純粋性とデフォルトの不変性を可能にする。そのため、副作用は宣言された時のみ使うことができる。Fregeは、以下のようなHaskellの機能をほぼサポートしている。 ADTとパラメトリックポリモフィズムを用いた型クラス より高いランクの型 パターンマッチング リストの包含 do表記 ポイントフリースタイル モジュール functor、monoi
We are part of: University of Tartu Faculty of Science and Technology Institute of Computer Science The Distributed Systems Chair performs teaching and research in parallel computing, peer to peer computing, mobile and cloud computing and real-time location-based big data problems, distributed and pervasive systems and autonomous driving. Distributed Systems Chair connects the following subgroups:
JVM Backend and Optimizer in Scala 2.12 Lukas Rytz, Scala Team @ Typesafe Scala 2.12 on one Slide • Move to Java 8: enjoy new VM and library features ↣ Interop for functions: source and bytecode ↣ Make use of default methods ↣ Interop with Java (parallel) streams • New optimizer ↣ Configurable, more reliable, better diagnostics ↣ Fewer bugs (inline trait methods) 2 Agenda • Move to Java 8 ↣ Intero
システムクラスローダと似たようなものに、「(スレッドの) コンテキストクラスローダ (context class loader)」というものがある。前々から名前だけは知っていたのだが、特に必要とする機会もなかったので何なのかは知らないままだった。今回、システムクラスローダが何なのかを調べたついでにこちらも調べたので、これも忘れないように書いておく。 そのスレッドで使われるクラスローダ、ではない 時折見かける間違いとして、「スレッドのコンテキストクラスローダは、そのスレッド内で発生するクラスやリソースのロード要求を処理する」というものがある: 『クラスローダサーブレット-TECHSCORE-』 ところでアプリケーションはメインスレッドも含めて、必ず1つ「コンテクスト・クラスローダ」を持ちます。コンテキスト・クラスローダとは、そのスレッド内でクラスをロードする場合に使用されるクラスローダのこと
Daniel Mitterdorfer, comSysto GmbH @dmitterd Behold! It will get scary. Topics Illusions by (J)VMs Interpreter JIT Compiler Memory Illusions Based on A JVM Does That??? Write Once, Run Anywhere One "Binary" for All Platforms Consistent Memory Model (Java Memory Model) Consistent Thread Model Bytecodes Are Fast (JITing) Infinite Heap (Garbage Collection) What "is" a JVM? The JVM is specified in The
Per the Java documentation, the hash code for a String object is computed as: s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] using int arithmetic, where s[i] is the ith character of the string, n is the length of the string, and ^ indicates exponentiation. Why is 31 used as a multiplier? I understand that the multiplier should be a relatively large prime number. So why not 29, or 37, or even 97?
Metascala is a tiny metacircular Java Virtual Machine (JVM) written in the Scala programming language. Metascala is barely 3000 lines of Scala, and is complete enough that it is able to interpret itself metacircularly. Being written in Scala and compiled to Java bytecode, the Metascala JVM requires a host JVM in order to run. The goal of Metascala is to create a platform to experiment with the JVM
あのWebサービスもJVMを利用している 「Javaは大規模なエンタープライズシステムにしか使われない」 それが常識だと思っていませんか? たしかに、これまでJava Virtual Machine(JVM)は、他の言語を実行すると遅く、Javaのプログラムを実行する環境にすぎないものでした。ところが、Java 7から実装されたInvokeDynamicにより、JVM上で、RubyやPHPなどさまざまなコンピュータ言語で記述されたプログラムをより高速に実行できるようになりました。 これにより、今までエンタープライズでJava言語で記述されたプログラムを実行するだけの環境であったJVMが、汎用的な実行環境になったと言えます。また、これまでJavaの実行環境として使用されていたノウハウが、他の言語で記述されたプログラムを実行する際にも利用できます。 最近では、TwitterがJVMをアプリケー
Written on Monday, January 6, 2014With the 2014 season of battlecode starting tomorrow, I figured now would be a good as time as any to finally write up my notes on bytecode hacking. If you’re unfamiliar with Battlecode, a good introduction is my previous post (tldr: it’s an intense open-to-all programming competition where teams write AIs for virtual robot armies). You might be wondering what byt
Yahoo! JAPANのIaaS基盤では200超のOpenStackクラスタが稼働しており、それらのコントロールプレーンをKubernetes上にデプロイしています。IaaSチームで管理している十数のKubernetesクラスタは古いバージョンのまま運用が続けられていたため、現在、段階的にバージョンアップおよびその自動化に取り組んでいます。このようなクラスタ群をメンテナンスする中で、工夫した点や失敗した点、得られた知見を紹介します。 Yahoo! JAPAN Tech Conference 2022は2022年2月3日、4日に開催しました。 https://techconference.yahoo.co.jp/2022/ アーカイブ動画はこちらからご覧ください。 https://youtu.be/F5EQqWOw8So
This article explains the internal architecture of the Java Virtual Machine (JVM). The following diagram show the key internal components of a typical JVM that conforms to The Java Virtual Machine Specification Java SE 7 Edition. The components shown on this diagram are each explained below in two sections. First section covers the components that are created for each thread and the second section
This post is a cheatsheet with enumeration of options, which should be always used to configure Java Virtual Machine for Web-oriented server applications (i.e. Web Front-End) in production or production-like environments. For lazy readers full listing is here (for curious detailed explanation is provided below): Java < 8 -server -Xms<heap size>[g|m|k] -Xmx<heap size>[g|m|k] -XX:PermSize=<perm gen
JavaVMで動くコマンドラインツールをHomebrewで配布する方法を説明します.JavaやScala,Groovyなどで書かれたツールをMacユーザに配布する際に役立ちます. Homebrewとは Mac OS Xで使えるパッケージ管理システムの一つにHomebrewがあります. Homebrewを使うと,ユーザは brew コマンドを実行するだけで新しいパッケージをインストールできます.また,デベロッパーはわざわざインストーラを用意する必要がなくなり,パッケージ本体とメタデータ(Formula)を公開するだけでソフトウェアを提供できるようになります. 例えば,OS Xでopensslを使いたい場合は,下記のコマンドを実行するだけでパッケージのダウンロードやビルドを行ってくれます. brew install openssl また,開発中の最新版を使いたい場合は,--HEAD引数を渡すこ
MapQuest developed a search ahead feature for their mobile app to enable auto-complete searching across their large dataset. They used Solr and implemented various techniques to optimize performance, including custom routing, analysis during ETL, and extensive JVM tuning. Their architecture included multiple Solr clusters with different configurations. Through testing and monitoring, they were abl
Programming languages like Java provide the facilities for subtyping/polymorphism as one of the ways to construct modular and reusable software. This language choice naturally comes at a price, since there is no hardware support for virtual calls, and therefore runtimes have to emulate this behavior. In many, many cases the performance of method dispatch is not important. Actually, in a vast major
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く