Playing with JVM / Java Heap Size.

Java programs executes in JVM uses Heap of memory to manage the data. If your Java program requires a large amount of memory, it is possible that the virtual machine will begin to throw OutOfMemoryError instances when attempting to instantiate an object. The default heap size if 1 MB and can increase as much as 16 MB.

Setting/Increase JVM heap size

It is possible to increase heap size allocated by the Java Virtual Machine (JVM) by using command line options. Following are few options available to change Heap Size.
-Xms<size> set initial Java heap size -Xmx<size> set maximum Java heap size -Xss<size> set java thread stack size
Code language: SQL (Structured Query Language) (sql)
For example, you can set minimum heap to 64 MB and maximum heap 256 MB for a Java program HelloWorld.
java -Xms64m -Xmx256m HelloWorld
Code language: HTML, XML (xml)

Getting / Reading default heap size

It is possible to read the default JVM heap size programmatically by using totalMemory() method of Runtime class. Use following code to read JVM heap size.
public class GetHeapSize { public static void main(String[]args){ //Get the jvm heap size. long heapSize = Runtime.getRuntime().totalMemory(); //Print the jvm heap size. System.out.println("Heap Size = " + heapSize); } }
Code language: Java (java)

View Comments

  • No. There is no way to set heap size permanently. But we use eclipse just pass the arguments like -Xmx ..

  • one simple way is to write a bat file to set permanently:

    we can write a bat file which opens the required jar file with proper heap size settings. For example :
    java -Xms64m -Xmx256m HelloWorld

    this can be put in a bat file.

  • Im doing the bat file but I have a problem I have the .exe file... not the class
    I any wat to do it whit the .bat?
    or another way to set it?
    I don;t know if its possible in java code to change it

  • hi my friends, well I tried to increase java heap space using run configuration in eclipse and netbeans, and the result was same ,I had NoClassDefFoundError , and when I deleted the command line (java -Xms64m -Xmx256m) and run the application again it worked normally except of course the pb of OutOfMemory exception, and even try dos prompt ,the vm didn't recognize the option -Xmx and sometimes it just throw the excption NoClassDefFoundError,well it 's really weird thing and I don't know how to explain it ,so little help will be nice.

    • try cleaning the data of other unwanted projects in your tomcat/webapps folder (place where the war file will be created).

Share
Published by
Viral Patel
Tags: heap size Java java heap size java vitual machine JVM jvm heap size

Recent Posts

  • Java

Java URL Encoder/Decoder Example

Java URL Encoder/Decoder Example - In this tutorial we will see how to URL encode/decode…

4 years ago
  • General

How to Show Multiple Examples in OpenAPI Spec

Show Multiple Examples in OpenAPI - OpenAPI (aka Swagger) Specifications has become a defecto standard…

4 years ago
  • General

How to Run Local WordPress using Docker

Local WordPress using Docker - Running a local WordPress development environment is crucial for testing…

4 years ago
  • Java

Create and Validate JWT Token in Java using JJWT

1. JWT Token Overview JSON Web Token (JWT) is an open standard defines a compact…

4 years ago
  • Spring Boot

Spring Boot GraphQL Subscription Realtime API

GraphQL Subscription provides a great way of building real-time API. In this tutorial we will…

4 years ago
  • Spring Boot

Spring Boot DynamoDB Integration Test using Testcontainers

1. Overview Spring Boot Webflux DynamoDB Integration tests - In this tutorial we will see…

5 years ago