Java classes are consuming lots of memory in linux server? - java

I was working on a kind of SMTP kinda protocol, I made it in java and run successfully. It was consuming about 20 to 30 MB in my laptop. Later I decided to make the protocol live on internet. I purchased the servers(VPS), domain. It costed me a lot. But when I tried to run my program over that server I was so shocked that my program was consumption about 800 to 900 MB for each class I was running. I thought it may be my programming fault, I tried a lot to recover from problem but I could not. Later a friend of mine suggested me to test a simple Hello word program on same server, I was so shocked that even that program was eating up to 900 MB of my total RAM.
What kinda of problem can it be ?
Is it the fault in those servers, or their OS and kernels versions ?
Is it problem of JVM with Linux kernels or older linux kernels.
I have even tried with older JVMs but no use. :(
I tried most of popular flavors of Linux but it worked same and had exactly same problem on all Linux flavors. Was eating huge memory in all cases. ( All of them had Linux kernel 2.6.xx)
But it worked very smooth and consumed expected memory in my laptop. (about 30 to 50 Mb). I use Linux in my laptop. But the difference is that my kernel is above 3.1.xx . Can it be the problem ? I am really so disappointed with behavior of my servers and have lost lots of money in it. Please anybody tell me the possible solutions, can it be the problem of Linux kernel or its problem in my programming.

Is your laptop running Windows? I'll assume that the answer is yes. The memory values you see reported in Windows Task Manager are not what Linux reports for total resident memory.
I don't believe that Hello World is taking up 900 MB. If it is, that tells me that the JVM memory is being reported, not your app.
Are you running this app on a Java EE app server like Tomcat or JBOSS? That will make a very big difference indeed.
The best advice is to search SO for other questions that showed how to use Linux tools like nmap to figure out where memory is being consumed.

Related

Error occurred during initialization of VM, Could not reserve enough space for object heap

I tried to make a Minecraft Server, using the suggestions I've seen people telling others to use the Paper API. So I got all the files, and I allocated 512 MB of ram to it (using -Xmx512M), and it runs completely fine! But it bumps into the limit of RAM too much, so I tried to push it to 3 GB (using -Xmx3G). (A bit excessive, for what I'm using it for, but it'll help me sleep at night, knowing I have a server that's not running into issues) but then I run into the problem where Java simply does not want to start.
I experimented a bit, found that anything higher than 1.5G and Java starts having problems. Could not reserve enough space for 3145728KB object heap
.
So I went looking around, and found people saying "Add an Environment Variable to the System Variables with _JAVA_OPTIONS and -Xmx3G" and whatever, and it appears to not change anything for me. Java still doesn't want to start. Does anyone know how this is? I can't seem to update my Java to any higher version, assuming mine was outdated. So it can't be an update, and not everyone runs into this issue because a server manager once told me their server ran with 10GB of ram.
I'd ask them, but I've lost contact, so I'm asking here instead.
You may be using a 32-bit Java installation. Check which Java is being executed and install/use the 64-bit version.
https://java.com/en/download/manual.jsp
Make sure you're running 64 Bit Java. Otherwise, go to the link above and get the Windows 64-Bit Offline download. then run that. Immediately fixed it for me.

Configuration about websphere (WAS) 7 with Windows 7

HI All,
I am working on WAS 7 and i am using windows 7 operating system and IE9 so can anyone suggest me what kind of good PC configuration i needed because my PC is getting hanged when i started worked on this... so PC Configuration will be like RAM ? processor ? like that...
Look at this for the bare minimum requirements.
http://www-01.ibm.com/support/docview.wss?rs=180&uid=swg27012421
Ensure that the memory is far higher than what is stated in this document. 1 GB is certainly not adequate.
It also depends on what you are running on this box (besides WebSphere App Server)
How many instances (or servers) of WAS are you running on it. Have about 1.5 GB (not referring to the JVM Heap here but the whole java process) per server instance as a ball park to have a reasonable performance.
HTH
Manglu

Running Java remotely using PowerShell

When I run PowerShell in a remote session (etsn {servername}), I sometimes can't seem to run Java processes, even the most simple:
[chi-queuing]: PS C:\temp> java -cp .\hello.jar Hello
Error occurred during initialization of VM
Could not reserve enough space for object heap
Hello.jar is an "Hello, world!" application that should just print "Hello" to standard output.
So, the question is, is there something special about running processes on the other side of a PowerShell session? Is there something special about how the Java VM works that might not allow treatment like this? The memory is allocated on the remote computer, right? Here is a readout on the physical memory available:
[chi-queuing]: PS C:\temp> $mem = Get-wmiobject -class Win32_OperatingSystem
[chi-queuing]: PS C:\temp> $mem.FreePhysicalMemory
1013000
But, when I remote desktop to the server and ask the OS how much free memory there is, it says 270 MB physical memory free. Let me know what you think!
According to this:
http://msdn.microsoft.com/en-us/library/aa384372(VS.85).aspx
MaxMemoryPerShellMB
Specifies the maximum amount of memory allocated per shell, including the shell's child processes. The default is 150 MB.
Increase Max Memory Per Shell MB
winrm set winrm/config/winrs '#{MaxMemoryPerShellMB="1000"}'
I have a different answer to share with you guys. I found myself in the same situation and increasing memory min/max for Java.exe or using winrm did NOT solve my issue.
I compared two servers: one working and one not working.
I used this link https://technet.microsoft.com/en-us/library/ff520073%28v=ws.10%29.aspx to check my Windows Management Foundation wich is needed to run WINRS and also remote powershell.
the result: Both servers running Windows Server 2008 R2. One server running WMF 2.0, one running WMF 3.0.
To my surprise, the server running 2.0 was working and the one running 3.0 was NOT!
My solution: I upgraded the 3.0 WMF to 4.0!
Just a fyi: we suffered the same symptoms, and had an endless investigation based on the other two answers.
The actual solution for us was changing jdk1.8.0_31 to jdk1.8.0_51.

low end virtual private server for java development

Will a vps with 360 megs of ram running Linux be able to support a single user developing a java web application that uses Spring, Hibernate, and MySQL for the database? The server will be for development only so the application will not have more then one or two concurrent users.
edit:
By development I mean a server I can deploy and test on. The actual coding will be done on windows, but I want a Linux server to test on as well.
This could work ok, but it depends a lot on your application setup. If you cache a lot, your appserver caching page content, Hibernate caching query results/objects or MySQL caching query results you probably will need more RAM. So if your content is big it might not fit, otherwise it might just fit. If you have absulutely no option of increasing the amount of memory if you find out you need more I would certainly not recommend this setup.
But maybe more to the point: What is your target platform? I would say that your server should match that.
Just for linux testing it probably is easier to either get a cheap pc or run it inside a virtual machine on your development machine (assuming you've got plenty of ram on that one).
Depends on what you're running for your IDE. If you're using Eclipse, you're going to want somewhere around 1Gb of RAM (Eclipse is a memory hog...and slow as all hell if you don't have enough).
If you're using a more efficient (memory wise) IDE, then you should be good to go with that setup for development.
UPDATE
Since no coding is going to happen on the box...you should be just fine with that box to do your testing. Enjoy!
Short answer - I don't think you will have any problems with the amount of ram. I've deployed a rails app to a 256MB VPS and it worked great for development.

Why is the Eclipse IDE getting slower?

I have downloaded the latest Eclipse IDE, Galileo, and tested it to see if it good for developing web applications in Java. I have also tried the Ganymede version of Eclipse and find that is it also good.
My Problem is that sometimes it hangs and stops responding while I am developing. Sometimes when I open a file, Eclipse hangs and does not respond for awhile. It seems that Eclipse is going slower and my job is getting slower because of the time that I am spending waiting for the response of Eclipse.
When I went to NetBeans 6.7, it was good and the performance was good. The loading is faster and the IDE responds well during my development testing.
My computer has 1 GB of RAM and a 1.6 GHz CPU.
What can you say about this?
I'm using Eclipse PDT 2.1 (also based on Galileo) for PHP development, and I've been using Eclipse-based IDE for 3 years now ; my observation is that 1 GB of RAM is generally not enough to run Eclipse + some kind of web server + DB server + browser + other stuff :-(
I'm currently working with a 1GB of RAM machine, and it's slow as hell... Few months ago, I had a 2GB of RAM machine, and things were going really fine -- and I'm having less software running on the "new machine" than I had on the other one !
Other things that seem to affect Eclipse's responsivness is :
opening a project that's on a network drive (accessing the sources that are on a development server via samba, for instance)
sometimes, using an SVN-plugin like SUbversive seems to freeze Eclipse for a couple of seconds/minutes
A nice to do with languages like PHP (might not be OK for JAVA projects, though) is to disable "automatically build" in "project"'s menu.
As a sidenote : I've already seen questions about eclipse's speed on SO ; you might want to try so searches, to get answers faster ;-)
This is a common concern and others have posted similar questions. There are optimizations that you can perform on your Eclipse environment. Take a look at the solutions posted here.
netbeans is really damn hot, i just didn get it to automatically release my android projects...
thinking of features.. i'd prefere eclipse...
to fasten it up a little more, just disable 'automatic build' doesnt really change anything (build just takes a little longer)
but it's really feelable faster...
but, after 1 or 2 hours, i also have to close, wait, and re-open it.
kind of sucks... (gotta macbook pro, 2.26 (i think) ghz, 3gb ram,
gave it a minimum of 768MB of ram, and keeps getting slower..
really sucks
::edit::
I also realized, that after opening a XML file, eclipse instantly gets a little bit more laggy (already disabled XML live compiling, or something similiar, makes no difference :( )
Our machines are bigger : 2GB ram, and faster CPU.
I'm sure that, as all software, Eclipse gets bigger and slower when upgrading version, due to all new functionnalities included. The good news is that from time to time, a release also brings some notable performance improvement. But in my experience, each time I tried using a ten-year old software on my current machine, it was lightning fast, so I'm sure the tendency is to get slower. I agree that this is a sad for us, when we don't get a better machine.
There might be some things you can do, to improve the responsiveness of your Eclipse.
I don't know if you already tried everything ... ?
My experience has been that NetBeans, Aptana, and Komodo are fast on computers where Eclipse is painfully slow. Maxing out RAM has seemed to help. Any chance you can bump up to 2 gig?
Netbeans sped up quite a bit in the last few years, perhaps your comparison is relative to the speed of netbeans?
Lately I had to up the size of my eclipse -Xmx from 64mb and decided I might as well go to 512, and it got a bit chunkier. at 64 I never saw the slightest pause, when it actually NEEDS a collection at 512 because of a long-running process that's not letting the background GC thread run, it can get a little pausey
I'm running on a pretty old version of eclipse (customized by the cable industry so it can run and display cable apps on a TV emulator) so your mileage may vary.
Check if you can disable unwanted plugins during start up.

Categories

Resources