Java webstart max-heap-size causes JVM cannot be started

We use java webstart on the client side for a java swing based aplication. Recently we have been experiencing a weird "Cannot start java Virtual machine " error when clicking in the jnlp link.

We soon find out its because the max-heap-size setting in the jnlp file was set to 1024m whereas most of the clients PC only have 1 gb physical memory. Set the max-heap-size back to 512m solved the problem. Currently, the relevant line in the jnlp file looks like

 <j2se version="1.5+" initial-heap-size="100m" max-heap-size="512m"/>

I looked into the jnlp spec, but cannot find anything related to the "Java Virtual machine" issue. In theory the max-heap-size should not matter as much as the initial-heap-size. But our experience suggested quite the contrary.

The client environment:

Windows XP SP2 ( 32bit ), Internet Explorer 8.06, Memory 1G Note max-heap-size set to 1024m can cause the same problem on a machine with 2G ram.

Basically, what I am looking for here is some reference/spec/experience about why this is happening, and if there is any get-round for this issue besides increasing the physical memory size.

Another thing is that if we leave the max-heap-size unspecified, will the actual physical memory size be used as the max-heap-size, or a system-default one will be used?

Thanks, JasonW

share | improve this question
 
Was this post useful to you?      

3 Answers

It is likely that this problem is caused by the fact that a sufficiently large memory area could not be allocated to your JVM. The Java object heap has to be allocated in contiguous virtual addresses, for implementation reasons.

I noticed that on a Win XP box with 2 Gb RAM this breaks at around 1.5 GB (this off course varies depending on what processes are running on each PC, so YMMV).

Checkout the following posts for some explanations:

Java maximum memory on Windows XP

Why is the maximum size of the Java heap fixed?

share | improve this answer
 
Very useful links. Thanks. It still supervises me that there is nothing (at least I cannot find anything)about the requirements for the jnlp max-heap-size parameter.  –  Jason Wang   Aug 24 '10 at 0:31
feedback

I found that both the initial-heap-size and max-heap-size were not well respected by the Mac version of javaws. I ended up replacing them with something like this:

      <j2se version="1.6+" java-vm-args="-Xmx1024m -Xms256m -Xss8m" />

And finally got it working on Mac with the larger heap size

share | improve this answer
 
feedback

Isn't there a possibility to set the Xmx for Clients with this problem permanently to a lower value? I tried to set Xmx in the Java Control Panel - without any effect. Additionally i exported the environment Varialbe jnlpx-heapsize=x,y without any effect. javaws -J-Xmx=y didn't work too. Only building manually the internal java.exe call did work.

share | improve this answer
 
Is this a question or an answer?  –  Till   Jan 25 at 17:01
feedback

Your Answer















 
or

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged     or ask your own question.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值