La compilation JIT en 10 minutes.
Pour la troisième solution qui consiste à passer des options à la JVM :
java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=file_or_dir_path Main.java
Note : Si c'est un répertoire qui est spécifié, alors le fichier sera nommé avec le numéro du pid. Par exemple java_pid22540.hprof
.
Et pour tester ces options, cette main simple génère une OutOfMemoryError :
public static void main(String[] args) throws Exception {
int dummyArraySize = 15;
System.out.println("Max JVM memory: " + Runtime.getRuntime().maxMemory());
long memoryConsumed = 0;
try {
long[] memoryAllocated = null;
for (int loop = 0; loop < Integer.MAX_VALUE; loop++) {
memoryAllocated = new long[dummyArraySize];
memoryAllocated[0] = 0;
memoryConsumed += dummyArraySize * Long.SIZE;
System.out.println("Memory Consumed till now: " + memoryConsumed);
dummyArraySize *= dummyArraySize * 2;
Thread.sleep(500);
}
} catch (OutOfMemoryError outofMemory) {
System.out.println("Catching out of memory error");
//Log the information,so that we can generate the statistics (latter on).
throw outofMemory;
}
}
Des exemples de Consumer et Producer Kafka.
Comment configurer le plugin surefire pour faire en sorte que les tests java ne s'exécutent pas.
Je ne voyais pas trop l'intérêt d'une notation qui se rapproche beaucoup de la fonction printf
en C. En effet, il existe deux manières d'écrire un message avec slf4j :
#La manière classique
logger.debug("The new entry is "+entry+".");
#Et cette autre façon
logger.debug("The new entry is {}.", entry);
En fait, la deuxième façon est exactement similaire à la première, à un détail près : quand le log est désactivé, cette ligne consommera 30 fois moins de ressources que la ligne de code classique, car la chaîne de caractères n'est évaluée que si le logger est activé.
Pour info, on peut l'utiliser avec n'importe quel nombre de variables :
logger.debug("Value {} was inserted between {} and {}.", newVal, below, above);
Une présentation rapide des objets Stream
Contexte : lors d'un build maven, par exemple en faisant mvn clean install
, un warning apparait au niveau du plugin maven-compiler-plugin disant :
[WARNING] bootstrap class path not set in conjunction with -source 8
Ce qui fait échouer le build.
Il s'avère que j'essaie de builder une application en java 8 depuis un java 10.
Explications : depuis Java 9, le JDK est composé de modules. Les jars issus de la compilation de ces modules n'ont qu'un accès limité aux classes les uns des autres. D'où le message indiquant un problème de PATH.
Solution : désinstaller java 9/10 et installer java 8.
Autres liens sur le même sujet:
http://martin-toshev.com/index.php/software-engineering/tips-and-tricks/79-building-openjdk-under-ubuntu-and-window-7-8
https://groups.google.com/forum/#!topic/adopt-openjdk/qRdMlWFgrhc
https://lhochet.blogspot.fr/2013/01/building-java-8-on-windows.html
https://technfun.wordpress.com/2015/08/03/building-openjdk-8-for-windows-using-msys/