What is the difference between abstract class and interface in terms of their storage in JVM. To be more precise where does JVM store interfaces into its memory?
What is the difference between abstract class and interface in terms of their storage in JVM
1.4k views Asked by Sharda Prasad Jaiswal At
2
There are 2 answers
0
Alex Taylor
On
The method area (logically part of the heap) stores a lot of information about classes and interfaces in the JVM:
...stores per-class structures such as the run-time constant pool, field and method data, and the code for methods and constructors, including the special methods (§2.9) used in class and instance initialization and interface initialization.
However:
This specification does not mandate the location of the method area or the policies used to manage compiled code.
Which means a particular JVM is free to store them wherever it pleases.
Related Questions in JAVA
- I need the BIRT.war that is compatible with Java 17 and Tomcat 10
- Creating global Class holder
- No method found for class java.lang.String in Kafka
- Issue edit a jtable with a pictures
- getting error when trying to launch kotlin jar file that use supabase "java.lang.NoClassDefFoundError"
- Does the && (logical AND) operator have a higher precedence than || (logical OR) operator in Java?
- Mixed color rendering in a JTable
- HTTPS configuration in Spring Boot, server returning timeout
- How to use Layout to create textfields which dont increase in size?
- Function for making the code wait in javafx
- How to create beans of the same class for multiple template parameters in Spring
- How could you print a specific String from an array with the values of an array from a double array on the same line, using iteration to print all?
- org.telegram.telegrambots.meta.exceptions.TelegramApiException: Bot token and username can't be empty
- Accessing Secret Variables in Classic Pipelines through Java app in Azure DevOps
- Postgres && statement Error in Mybatis Mapper?
Related Questions in INTERFACE
- How do I apply the interface concept with the base-class in design?
- Save Interface in DB golang
- Collections.max with custom Comparator on list
- Linux Networking - Routing packets from one network interface to another
- How to design the file operation interface involving status and transactions?
- Angular component's interface ( @Output / @Input ) how do you expose methods? Or certain type of events?
- Own Pattern / framework for interfacing with components in C
- Does anyone know how to make iPad layout the same as iPhone's? Size wise the text and overall layout get's smaller when I run the app on the iPad
- Use Interface Type in Map or Struct Definition, but Implement with Concrete utype
- How does variance work when implementing interfaces/type aliases in TypeScript?
- Fatal error: Uncaught TypeError when returning class instead of interface
- Golang Use of array of structs that implement MyInterface as []MyInterface not allowed
- Calling c++ from fortran
- Interface and model in TypeScript (angular 17)
- Interface called Delegate call failed
Related Questions in JVM
- How to check what objects are created and where?
- why does Java’s JIT compilation happen within user threads?
- The way Elasticsearch deals with control heap memory when indexing documents
- Within a Clojure project using deps.edn, where is the package name and version tracked?
- spark - How is it even possible to get an OOM?
- files in /tmp/hsperfdata_<user>/ were deleted
- Does an Stackoverflow occur in the JVM if the Activation Record is too small but there is still space left in the general stack?
- android art genertate verification errors,how to
- Understanding Invokedynamic Instruction in Java Bytecode and Its Impact on the Operand Stack
- A compatibility issue between jaydebeapi and jpype
- Java native access violation is not triggering the windows jit debugger
- java flight recorder(jfr) consumes 100% cpu when its supposed to have only 1-2% overhead
- Java reflection returning base type for Scala classes
- What is the exactly time that JNI release the LocalReference automatically?
- jvm exits for unknown reason
Related Questions in ABSTRACT-CLASS
- How to declare abstract class static fields in Python?
- How to check if object is Transferable?
- Type hint for a factory classmethod of an abstract base class in Python 3
- Dotnet class method with generic return type and one generic argument
- Abstraction vs Encapsulation , not the bookish definition , real world examples
- Assign concrete class to variable
- incompatible types : ArrayList<Link> cannot be converted to Links<Link>
- Multiple references to abstract class in the same line
- Python TypeVar with abstract class implementation
- How to make an alias for the class from internal namespace?
- How can I call a non-static function from an abstract class in PHP 8?
- Is there a way for a base class to require derived classes to have a comparison function to an object of the derived same class?
- Middle static Classes without interface in typescript
- Abstract @property - instantiating a "partially implemented" class?
- C# - updating child class from base class
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Warning: As was mentioned by @assylias, this mechanics are specific for Oracle HotSpot JVM.
Before Java8
All meta information is stored in PermGen, for both abstract classes and interfaces. Meta information includes only class specific information (what fields it has, what is parent, etc).
Interface can have only
public static finalfields, so this field meta information is stored in PermGen.Abstract class can have both static and non-static fields. However, there is no difference in terms of meta information, so it is all stored in PermGen too. On the other hand, real object instances are stored in Heap for both static and non-static fields.
See the example
Field information about
calendarandmyDateis stored in PermGen and real object instances are stored in Heap.In Java8 PermGen was moved inside the Heap space, in so-called Metaspace, so you will not see
java.lang.OutOfMemoryError: PermGen spaceanymore. However, conceptual separation between meta information and object allocation memory is still present.Also review @AlexTaylor specification quotation.