Embodiments of the invention comprise a method and apparatus for avoiding
array class creation in, for example, virtual machines for object-oriented
programming languages. Embodiments of the invention reduce the internal
structures created for arrays at runtime, thereby reducing memory
consumption. Unlike in a traditional implementation, where a separate
array class is created for each array of different type, in an embodiment
of the invention the type information is stored in array instances
instead. Array classes are not created at all. Rather, the root class of
the class hierarchy (e.g., "java.lang.Object") is used as the class of
each array instance. When an array instance is instantiated, a reference
to the "java.lang.Object" class is created in the class field of the array
instance and the type information is stored in the instance itself. In one
embodiment of the invention, an integer type value is stored in a special
type field of the array instance. The type field can be part of an
existing field or a new field of the array instance. In an alternate
embodiment of the invention, a type field is included in an array instance
that can contain a reference, or pointer, to the element type class for
the array.
As incorporações da invenção compreendem um método e um instrumento para evitar a criação da classe da disposição em, para o exemplo, máquinas virtuais para línguas de programação object-oriented. As incorporações da invenção reduzem as estruturas internas criadas para disposições no runtime, desse modo reduzindo o consumo da memória. Ao contrário de uma execução tradicional, onde uma classe separada da disposição seja criada para cada disposição do tipo diferente, em uma incorporação da invenção o tipo informação é armazenado dentro em exemplos da disposição preferivelmente. As classes da disposição não são criadas em tudo. Rather, a classe da raiz da hierarquia da classe (por exemplo, "java.lang.Object") é usada como a classe de cada exemplo da disposição. Quando um exemplo da disposição é instantiated, uma referência à classe de "java.lang.Object" é criada no campo da classe do exemplo da disposição e o tipo informação é armazenado no exemplo próprio. Em uma incorporação da invenção, um tipo valor do inteiro é armazenado em um tipo especial campo do exemplo da disposição. O tipo campo pode ser parte de um campo existente ou de um campo novo do exemplo da disposição. Em uma incorporação alterna da invenção, um tipo campo é incluído em um exemplo da disposição que possa conter uma referência, ou no ponteiro, ao tipo classe do elemento para a disposição.