Intellij -server flag - intellij-idea

I've seen suggestions to improve the performance of intellij putting the flag -server on idea.exe.vmoptions (or idea64.exe.vmoptions), what is the benefit of using -server flag on intellij 14 ?
How can I decide if enable this flag?

These .vmoptions files specify options for the JVM on which IDEA runs.
So for the -server parameter the official Java documentation states that:
Selects the Java HotSpot Server VM
http://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html
and
In general, the server VM starts up more slowly than the client VM, but over time runs more quickly.
http://docs.oracle.com/javase/8/docs/technotes/guides/vm/server-class.html
However, it is explicitly mentioned that:
The 64-bit version of the JDK supports only the Server VM, so in that case the option is implicit.
In other words when using the "server" flag, IDEA may start up more slowly, but may perform better. However specifying it makes sense only if you're using a 32-bit java to run IDEA.
Note that idea.sh or idea.bat have logic in them which tries first to find 64 bit java on the machine and if such is not found, tries to locate 32-bit one. If you're starting it on Windows with idea.exe, always 32 bit java will be used. If you're starting it on Windows with idea64.exe, always 64 bit java will be used.

Related

Where to download Hotspot JVM? Different from Oracle's JVM?

I read a few posts about JVM at Stack Overflow and would like to download a binary copy of the Hotspot JVM, yet I am not able to find it on http://www.java.net.
Beside that, what is the difference between Hotspot JVM and JVMs found at Oracle
Is Oracle JVM good for a production website?
Overview:
This SO question may clear up your questions regarding "What is JVM, Hotspot and OpenJDK".
Basically:
JVM means Java Virtual Machine. The JVM is the underlying runtime that executes java bytecode. There are multiple different implementations out there, all implementing the Java Virtual Machine Specification
HotSpot is the most used implementation of the JVM concept. It is used in both, Oracle JDK and OpenJDK. Oracle's JDK can be downloaded on oracle's website, currently http://www.oracle.com/technetwork/java/javase/downloads/index.html. This is "the typical JVM you will find on a normal user's windows machine".
OpenJDK is the open source project maintaining and impelmenting the HotSpot JVM, but also many other projects beside the JVM such as Graal or VisualVM. On Ubuntu for example you can install this OpenJDK (current version 8) by running sudo apt-get install openjdk8.
Conclusion:
While this explaination is not really perfect, it may be good enough to understand that there is no big difference between Oracle JDK and OpenJDK. If you are interested in a little more info on this, have a look at the SO question Differences between Oracle JDK and Open JDK
JDK / JVM sourcecode:
If you are interested in the source code, OpenJDK is the way to go. Here you can find the current OpenJDK 8 (which includes the HotSpot JVM). Its source code can be found here. It also states how to download the source code:
The jdk8u-dev forest for ongoing development can be cloned using this command: hg clone http://hg.openjdk.java.net/jdk8u/jdk8u-dev;cd jdk8u-dev;sh get_source.sh .
The corresponding master forest jdk8u can be cloned using this command: hg clone http://hg.openjdk.java.net/jdk8u/jdk8u;cd jdk8u;sh get_source.sh .
In addition, the source code for the last release, 8u66, is available by cloning the 8u master forest : http://hg.openjdk.java.net/jdk8u/jdk8u and using the 'jdk8u66-b17' mercurial tag.

Error while running Jprofile8

I am getting following error while running /tmp/jprofiler8/bin/jpenable
No suitable Java Virtual Machine could be found on your system.
The version of the JVM must be at least 1.6 and at most 1.7.
Please define INSTALL4J_JAVA_HOME to point to a suitable JVM.
You can also try to delete the JVM cache file
I have also set INSTALL4J_JAVA_HOME to point to suitable JVM.
Java version on my machine is 1.4.2.
Can anyone please suggest what might be wrong or missing?
Unfortunately you did not mention details about your environment, so I don't know which Linux distribution you use.
There are some options though:
install a current JRE alongside the installer for JProfiler
As you can't install or update Java, you could provide a JRE in a kind of "portable application" setup. Simply unzip the server jre Oracle provides or (if you are not on an x64 architecture) unzip the jdk you also can download from Oracle.
But if the code you want to profile is limited to your pre-installed Java 1.4 you will run into another problem, because as far as I know Java 1.5 is the minimum JProfiler expects
use a different machine for profiling
Unless your code depends heavily on the environment you run it in you can even take a Windows 8.1 machine and profile the code there. Code that is slow is slow on any operating system. Or make use of a different Linux computer.

OpenJDK's JDK location

I'm running Minecraft on a headless Linux server with OpenJDK. I've added a bunch too many mods and its lagging (even on my local network) without using too much CPU or memory (e.g. its lagging, but its still got resources it can use). So I'm pretty sure its a mod fault.
To save the hassle of removing/adding mods one by one to see whats causing the error, my research led me to VisualVM where you can profile the java application and see which entities are doing what and with what resources. With any luck it should point out the mod consuming the most resources, and the most ticks.
Given its a headless server, and VisualVM is a window/GUI application, I've successfully managed to get it running and passing the GUI back to my Windows client using X over SSH.
Trouble is now, that its telling me that I need to use JDK and not JRE. Which is fair enough. Except OpenJDK has JDK in its name, rendering all googling futile. I cannot for the life of me, find if JDK is included in OpenJDK, what its named, and where it may be located. The other problem is, most of the troubleshooting guides I find are for Windows, and dont help me find the JDK on linux.
As some background information, I'm running Debian, and I know OpenJDK's JRE is installed here: /usr/lib/jvm/java-7-openjdk-amd64/jre
Can someone tell me please, if JDK is in OpenJDK, or I need to install it as well? If I do need to install it, is there an OpenJDK equivelant for JDK? If its already included, can someone provide some tips on locating it, so I can point VisualVM at it instead of the JRE?
The OpenJDK has a JDK, but there is also a cut down version which is just the JRE. I would use locate javac and if it can't find it, you need to install the JDK.

Forcing 64 bit jvm to 32 bit jvm?

Would anyone please give me ideas about forcing 64 bit jvm to run as 32-bit jvm?
I need to write a jse desktop application for bluetooth connection. For that i need to implement Bluecove jar . It has 32-bit files only. So i included -D32 under VM arguments in eclipse pulsar. But still i am getting the same error that displayed before adding the argument: bluecove_x64.dll missing. I tried with -d32, and it showed me "unrecognized option: d32".
And it seems like i should install a 32-bit jvm that would run on 64-bit os. So, can anyone please tell me what exactly should i install? Java SDK in 32-bit or Eclipse software?
Thanks in advance!
Switching modes is only possible on Solaris. A JVM is either 64bit or 32bit, except on Solaris where both run modes are available in a single JVM.
But anyway, if you don't need more than 4Gig Ram, install the 32bit JVM also on 64bit Systems, because it is 10-15% faster and needs less memory.
First, install a 32-bit JVM. (I suppose this is under Windows).
Then in Eclipse, open the Preferences panel, and go to Java -> Installed JRE's.
Click Search, tell it to search your harddisk.
Wait.
You should now see both your original 64-bit JVM and your new 32-bit JVM in the list. Put the checkmark on the 32-bit JVM instead of the 64-bit JVM. Click OK.
You should now use a 32-bit JVM in Eclipse, which should be compatible with the library you have.

is there a stand alone JVM that run's on a PC without any OS

As i know java programs are able to run on any Operating System.
and there are JVM's for any kind of machines.
I need a JVM that runs on my PC stand alone, and not on my OS (windows or any thing else).
I mean a JVM that acts like a boot, instead of the OS boot
i searched for all versions of JVM on "www.java.com/en/download/manual.jsp", but i did not get the suitable JVM.
the following link helped me a little but that was not enough
http://java-virtual-machine.net/other.html#jvm
my PC CPU is AMD Athlon(tm) 64X2 Dual Core Processor 5200 + 2.69 GHz
any body can help me to find the suitable jvm version ?!
Sure, have a look at JRockit Virtual Edition. As I understand it it's basically a micro kernel especially tailored for the JRockit VM.
From this page:
Java without the OS: JRockit Virtual Edition (VE)
Am I the only one that's never heard of this before? The Oracle JRockit team is looking at eliminating the OS from the stack required to run Java. This product will be called JRockit VE (not out yet)
JavaOS
Good lucking getting hold of it, though, it's nothing more than a historical curiosity.
There are two JVMs that I am aware of, which have this property:
The Fiji WM: http://www.fiji-systems.com/index.html
According to http://rtjava.blogspot.com/2009/11/new-real-time-vm-was-born-fiji-vm.html it also runs on bare metal.
The next possibility is JNode: an open source operating system where most parts are written in Java (the rest in assembly): http://www.jnode.org/
JNode is still beta, though.
No.
There was an idea of making a machine that could run a JVM as an actual machine (non virtualized), similiar to LISP machines, but that idea never took off...
You need a host OS to run a JVM.
Googling "java real machine" might give you some interesting articles.
I've found two: one from 2004, talking about how such a machine could be built and another one, talking about how JVM runs as a real machine on hardware such as mobile devices.
Still, no dice with a plain PC.