tags:

views:

241

answers:

3

I am using using os.system call from python to run jar file. The jar file requires large heap space and thus i am allocating 4 Gb heap space using Xmx. When i execute the command "java -Xms4096m -Xmx4096m -jar camXnet.jar net.txt" from command line it executes properly, however when i call it from a python program via os.system, it works only if memory allocated is less than 4Gb, otherwise it fails to execute. Any solutions?

By fails to execute i mean that A command window appears indicating that os.system has been called and then it disappears, i will check for the error code if any being returned. however no problems are encountered if xmx,xms are set to lower value.

Ok i checked both version and there is a difference The one being called via python is Java HotSpot Client VM mixed mode,sharing while one being called via normal command line is Java HotSpot 64 bit server

How do make os.system in python call the correct one that is the 64 bit server.

UPDATE: I tried using subprocess module as yet the version of java return is same as that from os.system

+1  A: 

It's hard to be sure without knowing more detail - like which OS you're on - but my guess is that you're using a 32-bit version of Python which means that when you launch Java, you're also getting the 32-bit version which has a heap size limit of 4GB.

To test if this is the case, compare the output of java -version when run from the command line and when run from your Python script.

Dave Webb
Ok i checked both versionand there is a differenceThe one being called via pythonisJava HotSpot Client VM mixed mode,sharingwhile one being called via normal command line is Java HotSpot 64 bit server
So it sounds like I may be right. Check if you're using a 32-bit or 64-bit version of Python.
Dave Webb
Yes i am using 32 bit python 2.5Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] on win32
OK, so you need to download 64-bit Python and try again. Or it may be possible to solve this by tweaking the PATH variable on Windows before you launch Java. Perhaps try giving the full path the 64-bit Java in your Python script to see if that fixes it.
Dave Webb
A: 

Just a suggestion, but try using subprocess.call() instead of os.system(), it is preferred and may handle the issue you are experiencing. I'm curious to know if it does...

jcoon
No it still returns the same version of Java "Java HotSpot Client VM mixed mode,sharing" and not the 64 bit server
+1  A: 

I was having the same problem launching 64bit Java from 32bit python. I solved the problem using Dave Webb's suggestiong of putting the full path to 64bit Java.exe in the python script. This worked fine so it is not necessary to use 64 bit Python