Question

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

Was it helpful?

Solution

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.

OTHER TIPS

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

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...

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top