WO2001004744A2 - Methods and apparatus for implementing individual class loaders - Google Patents

Methods and apparatus for implementing individual class loaders Download PDF

Info

Publication number
WO2001004744A2
WO2001004744A2 PCT/US2000/019233 US0019233W WO0104744A2 WO 2001004744 A2 WO2001004744 A2 WO 2001004744A2 US 0019233 W US0019233 W US 0019233W WO 0104744 A2 WO0104744 A2 WO 0104744A2
Authority
WO
WIPO (PCT)
Prior art keywords
application
class loader
classes
class
recited
Prior art date
Application number
PCT/US2000/019233
Other languages
French (fr)
Other versions
WO2001004744A3 (en
Inventor
Tao Ye
Bartley H. Calder
Jesus David Rivas
Jonathan D. Courtney
Original Assignee
Sun Microsystems, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems, Inc. filed Critical Sun Microsystems, Inc.
Priority to JP2001510084A priority Critical patent/JP2003504754A/en
Priority to EP00945394A priority patent/EP1194838B1/en
Priority to CA002378588A priority patent/CA2378588A1/en
Priority to KR1020027000225A priority patent/KR20020035558A/en
Priority to DE60038377T priority patent/DE60038377D1/en
Priority to AU59345/00A priority patent/AU5934500A/en
Publication of WO2001004744A2 publication Critical patent/WO2001004744A2/en
Publication of WO2001004744A3 publication Critical patent/WO2001004744A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44594Unloading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/14Display of multiple viewports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/611Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/426Internal components of the client ; Characteristics thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • H04N21/4312Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations
    • H04N21/4316Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations for displaying supplemental content in a region of the screen, e.g. an advertisement in a separate window
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440263Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by altering the spatial resolution, e.g. for displaying on a connected PDA
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4438Window management, e.g. event handling following interaction with the user interface
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/4728End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for selecting a Region Of Interest [ROI], e.g. for requesting a higher resolution version of a selected region
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/485End-user interface for client configuration
    • H04N21/4858End-user interface for client configuration for modifying screen layout parameters, e.g. fonts, size of the windows
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/44Receiver circuitry for the reception of television signals according to analogue transmission standards
    • H04N5/445Receiver circuitry for the reception of television signals according to analogue transmission standards for displaying additional information
    • H04N5/45Picture in picture, e.g. displaying simultaneously another television channel in a region of the screen
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/12Overlay of images, i.e. displayed pixel being the result of switching between the corresponding input pixels
    • G09G2340/125Overlay of images, i.e. displayed pixel being the result of switching between the corresponding input pixels wherein one of the images is motion video
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Definitions

  • the present invention relates generally to computer software. More particularly, the present invention relates to methods and apparatus for implementing a class loader adapted for loading classes associated with an application.
  • the digital television revolution is one of the most significant events in the history of broadcast television. With the advent of digital television, high speed data transfer is possible via satellite, cable and terrestrial television channels. Digital television will offer users more channels as well as significantly improved video and audio quality. Most importantly, digital television ushers in the age of true interactive television. For instance, digital receivers will be able to offer users a variety of enhanced services, from simple interactive quiz shows, to Internet over the air, and a mix of television and web-type content. As the market for digital television grows, content developers are looking for a feature-rich, cost-effective, and reliable software platform upon which to build the next generation of interactive television services such as Electronic Programming Guides, Video-On-Demand, and Enhanced Broadcasting.
  • Java is a leading commercial object-oriented language designed as a portable language.
  • a Java program can be written and compiled once and run on any compatible device that supports the JAVATM PLATFORM.
  • Java is incorporated into all major Web browsers.
  • Java runs on any web-enabled computer via that computer's Web browser.
  • it offers great promise as the software platform for the next generation of set-top boxes and digital televisions.
  • object-oriented programming runtime data are represented by objects. Each object is defined via its class, which determines the properties of an object. In other words, objects are individual instances of a class. To run a Java application, the related classes are loaded into memory. Instances of these classes are then constructed following the flow of the program.
  • Java Virtual Machine typically automate this process and perform garbage collection to increase the amount of available memory. Accordingly, objects are deleted or "garbage collected" automatically by the Java runtime environment when they are no longer referenced.
  • an application manager is adapted for constructing a class loader for an application.
  • a specialized class loader may be constructed (e.g., instantiated) to load classes associated with an application that is to be loaded via a digital television receiver. Accordingly, the class loader is employed to load one or more classes associated with the application.
  • an application manager is adapted for monitoring and managing execution of the application and de-referencing the constructed class loader when execution of an application ends or when execution of the application is terminated (e.g., by a signal).
  • the application manager determines that the application has terminated, the classes are unloaded since they are no longer needed. This is accomplished, in part, by de-referencing the class loader for the application such that the class loader becomes unreachable. Since the class loader is the last to maintain a reference to the classes that it has loaded into the execution environment, these classes become unreachable when the class loader is de- referenced, provided no other instances in the runtime environment reference the classes. Accordingly, when garbage collection is performed, the classes are effectively unloaded.
  • the present invention is implemented on a JAVA PLATFORM.
  • the JAVA PLATFORM provides an ideal development and deployment platform for this emerging class of interactive services.
  • the Java programming language provides content developers with a high degree of control and flexibility of the "look and feel" of their applications, enabling them to deliver the most dynamic and compelling interactive television experiences to their audience.
  • the garbage collection process is leveraged to shift the burden of memory allocation and memory management from the programmer to the platform.
  • interactive television applications written in the Java programming language offer security, extensibility, and portability across a diverse array of television receivers, saving content developers time and money getting their interactive applications to market.
  • the present invention utilizes individual class loaders to load and unload classes associated with each application. Through the de-referencing of the appropriate class loaders when it is determined that the associated classes are no longer needed, the garbage collection process is leveraged to maximize the amount of available memory. This is particularly important in systems having limited memory, such as in a digital television receiver.
  • FIG. 1 is a block diagram illustrating a system in which the present invention may be implemented.
  • FIG. 2 is a block diagram illustrating one embodiment of the invention during the loading of classes.
  • FIG. 3 is a block diagram illustrating one embodiment of the invention during execution of an application.
  • FIG. 4 is a block diagram illustrating one embodiment of the invention upon completion of execution of the application.
  • FIG. 5 is a block diagram illustrating one embodiment of the invention after one round of garbage collection is completed.
  • FIG. 6 is a process flow diagram illustrating one method of executing an application on a digital TV receiver according to one embodiment of the invention.
  • FIG. 7 is a process flow diagram illustrating one method of implementing an application manager to unload classes during execution of an application as shown in FIG. 6 according to one embodiment of the invention.
  • FIG. 8 is a block diagram illustrating a typical, general-purpose computer system suitable for implementing the present invention.
  • classes may each be represented by a class object, which includes the definition of the associated class. Therefore, the terms "class” and "class object” are used interchangeably throughout.
  • FIG. 1 is a block diagram illustrating an exemplary digital television receiver.
  • a signal is received via antenna 102 and tuned by tuner module 104, producing MPEG2 transport stream 106.
  • De-multiplexer 108 then produces encrypted MPEG stream 110 including a video stream 112, an audio stream 114, and a data stream 116.
  • These three streams are then processed by conditional access subsystem 118.
  • the conditional access subsystem 118 may utilize key management information 120 as well as decryption information 122 (e.g., decryption algorithms).
  • the conditional access subsystem 118 produces decrypted MPEG streams 123 including a video stream 124 and audio stream 125 as well as data 126, all of which are decrypted.
  • a decoder 128 then processes the decrypted MPEG stream 123, and forwards the decoded video data to frame buffer 130 and transmits the decoded audio data to speaker 132.
  • Java Virtual Machine is one platform that may be used to implement the present invention by processing information received by a digital television receiver such as that illustrated in FIG. 1. More particularly, when the data 126 is processed, it could contain Java applications that are composed of many classes. It is therefore desirable to load and unload classes dynamically to minimize the memory consumption in a digital television or digital television receiver (or set-top box), which is typically limited in memory.
  • FIG. 2 is a block diagram illustrating one embodiment of the invention.
  • an application manager 202 is provided to manage the loading of classes as well as the execution of applications on the platform.
  • One method of implementing the application manager 202 will be described in further detail with reference to FIG. 7. More particularly, the loading of classes is managed, in part, through the creation of an individual class loader for each application.
  • the application manager 202 instantiates a first class loader 204 adapted for loading classes associated with a first application (APP1).
  • the application manager 202 instantiates a second class loader 206 adapted for loading classes associated with a second application (APP2).
  • the application manager 202 and the class loaders 204 and 206 are stored in a memory 208.
  • the class loaders 204 and 206 then load classes for the respective applications. More particularly, as shown, the first application class loader 204 loads a first set of classes 210 associated with the first application and the second application class loader 206 loads a second set of classes 212 associated with the second application. In this manner, the first and second sets of application classes 210 and 212 are loaded into execution environment 214 (e.g., JVM). Once loaded, the classes may be accessed during execution of each of the applications.
  • execution environment 214 e.g., JVM
  • FIG. 3 is, for example, associated with execution of first and second applications by the JVM.
  • the application manager 202 maintains a link (e.g., reference) to the first application class loader 204 as well as to the second application class loader 206.
  • the first application class loader 204 maintains a link (e.g., reference) to the first set of application classes 302.
  • the second application class loader 206 maintains a link (e.g., reference) to the second set of application classes 304.
  • each link may be implemented through the use of a pointer.
  • the application manager 202 continues to reference all of the class loaders 204 and 206 during execution of the respective applications.
  • the class loaders 204 and 206 reference the application classes 302 and 304, respectively, during execution of the respective applications.
  • the first and second sets of application classes are stored in a JVM stack residing in memory (e.g., memory 200).
  • the memory may be Random Access Memory (RAM).
  • FIG. 4 is a block diagram illustrating one embodiment of the invention following completion of execution of the second application.
  • the application manager 202 dereferences the second application loader 206.
  • the application manager 202 removes the link to the second application loader as shown at 402.
  • the original reference variable to the second application loader 206 may be set to null.
  • a reference variable to the second application loader 206 may be set to null
  • the second class loader 206 becomes an unreachable object in memory.
  • garbage collection 406 subsequently removes the associated classes 304 (e.g., class objects) as well as all instances of the classes 304 (i.e., objects), since they are also unreachable at the moment.
  • classes referenced by the de-referenced class loader 206 are garbage collected and the allocated memory is returned to the available memory pool.
  • FIG. 6 is a process flow diagram illustrating one method of executing an application transmitted via a digital TV receiver according to one embodiment of the invention.
  • the process begins at block 602 and at block 604 the digital television receiver is turned on.
  • the JavaTM environment is then started at block 606.
  • An application manager is then constructed at block 608 and run at block 610.
  • a variety of digital television services may be received by a digital television receiver such as that illustrated in FIG. 1. In addition to receiving a multitude of channels, these services could range from interactive television, to near video-on- demand, to specialized programming.
  • an application associated with the selected service may be received via the digital television receiver at block 614. For instance, when the user selects a Disney service, there might be a Disney application that is received for enhanced viewing experience.
  • the application manager is responsible for monitoring and managing the execution of the application. For instance, the application manager is signaled to load and execute the application at block 616.
  • a start signal is received (e.g., via the digital television receiver) at block 618 to start the application
  • the application manager is signaled to start the application at block 620.
  • the application executes until a stop signal is received (e.g., via the digital television receiver) at block 622, and the application manager is signaled to stop the application at block 624.
  • the process ends at block 626.
  • FIG. 7 is a process flow diagram illustrating one method of implementing an application manager to unload classes during execution of an application as shown in FIG. 6 according to one embodiment of the invention.
  • the process begins at block 702 and at block 704, the application manager performs initialization as appropriate.
  • the application manager is responsible for managing execution of one or more applications.
  • the application manager waits for a signal (e.g., via the television receiver) as shown in FIG. 6 prior to blocks 614 and 616 indicating that the application manager is to load an application (e.g., received from the broadcast data stream), start an application, or stop an application.
  • the application manager therefore waits for such a signal as shown at block 706.
  • the application manager constructs a class loader for the application 710.
  • the class loader is designed to load one or more classes associated with the application.
  • the application manager receives a start signal at block 712
  • the application manager employs the appropriate class loader to load the application classes associated with the application at block 714.
  • the application classes may be loaded according to security constraints of the application.
  • the class loader can perform appropriate security checks to determine if the application can be loaded.
  • the application manager then begins execution of the application at block 716 and waits at block 718 until the application ends or until the application is terminated prior to its completion.
  • the application manager recognizes the termination or completion of an application through the receipt of a signal or message from the application or other process indicating that execution of the application is terminated.
  • the application manager When the application manager receives a stop signal to stop execution of the application prior to its completion as shown at block 720, the application is destroyed (e.g., deleted) at block 722. Cleanup associated with the destroyed application is then performed at block 724. The class loader for the application is then de-referenced at block 726.
  • the application sends a signal (e.g., from the application or the broadcast environment via the receiver) to the application manager to initiate cleanup of the application. For instance, any files associated with the application are deleted and any associated threads are removed. In addition, any data used for bookkeeping such as references to each application may be deleted when no longer needed.
  • the process then continues at block 724 to cleanup the application and de-reference the class loader for the application at block 726.
  • de-referencing may be accomplished by removing a link between the class loader and the application manager by setting a pointer (e.g., reference variable associated with the application manager) to the class loader to null.
  • the class loader may be marked as unreachable. Since the class loader is the last to maintain a reference to the classes that it has loaded into the execution environment, these classes become unreachable when the class loader is dereferenced. Accordingly, when garbage collection is performed, the classes are effectively unloaded.
  • Garbage collection may be performed in a variety of ways to unload classes associated with a de-referenced class loader. For instance, garbage collection may be performed in two separate passes. In the first pass, garbage collection may search for all objects and classes that are unreachable. At this time, it may be determined that the class loader is unreachable, as well as the classes loaded by it. The classes associated with the unreachable class loader may be marked as unreachable at this time. Moreover, since the class loader is unreachable, garbage collection frees up the memory allocated to the de-referenced class loader. In the second pass, the classes loaded by the now non-existing class loader that were marked as unreachable in the previous pass will be found and removed from memory.
  • garbage collection may be performed in two separate passes. In the first pass, garbage collection may search for all objects and classes that are unreachable. At this time, it may be determined that the class loader is unreachable, as well as the classes loaded by it. The classes associated with the un
  • FIG. 8 illustrates a typical, general-purpose computer system 1002 suitable for implementing the present invention.
  • the computer system may take any suitable form.
  • the computer system may be integrated with a digital television receiver or set top box.
  • Computer system 1030 or, more specifically, CPUs 1032 may be arranged to support a virtual machine, as will be appreciated by those skilled in the art.
  • the computer system 1002 includes any number of processors 1004 (also referred to as central processing units, or CPUs) that may be coupled to memory devices including primary storage device 1006 (typically a read only memory, or ROM) and primary storage device 1008 (typically a random access memory, or RAM).
  • processors 1004 also referred to as central processing units, or CPUs
  • memory devices including primary storage device 1006 (typically a read only memory, or ROM) and primary storage device 1008 (typically a random access memory, or RAM).
  • ROM read only memory
  • RAM random access memory
  • Both the primary storage devices 1006, 1008 may include any suitable computer-readable media.
  • the CPUs 1004 may generally include any number of processors.
  • a secondary storage medium 1010 which is typically a mass memory device, may also be coupled bi-directionally to CPUs 1004 and provides additional data storage capacity.
  • the mass memory device 1010 is a computer-readable medium that may be used to store programs including computer code, data, and the like.
  • the mass memory device 1010 is a storage medium such as a hard disk which is generally slower than primary storage devices 1006, 1008.
  • the CPUs 1004 may also be coupled to one or more input/output devices 1012 that may include, but are not limited to, devices such as video monitors, track balls, mice, keyboards, microphones, touch-sensitive displays, transducer card readers, magnetic or paper tape readers, tablets, styluses, voice or handwriting recognizers, or other well-known input devices such as, of course, other computers.
  • the CPUs 1004 optionally may be coupled to a computer or telecommunications network, e.g., an internet network or an intranet network, using a network connection as shown generally at 1014. With such a network connection, it is contemplated that the CPUs 1004 might receive information from the network, or might output information to the network in the course of performing the above- described method steps. Such information, which is often represented as a sequence of instructions to be executed using the CPUs 1004, may be received from and outputted to the network, for example, in the form of a computer data signal embodied in a carrier wave.
  • the present invention enables classes to be unloaded when it is determined that they are no longer needed.
  • classes are effectively loaded and unloaded when the classes are no longer needed (e.g., when the application ends or is terminated).
  • an added level of security is provided to prevent unauthorized applications from being loaded and executed.
  • PLATFORM it may also be implemented on a variety of platforms or contexts in which object-oriented languages are used.
  • "unreachability” may refer generally to the unavailability of those entities that are "de-referenced”.
  • the above described process blocks are illustrative only. Therefore, the loading and unloading of classes may be performed using alternate process blocks. Accordingly, the present embodiments are to be considered as illustrative and not restrictive, and the invention is not to be limited to the details given herein, but may be modified within the scope and equivalents of the appended claims.

Abstract

Methods and apparatus for loading and unloading classes associated with an application are disclosed. A class loader adapted for loading classes associated with an application is constructed. The class loader is employed to load one or more classes associated with the application such that the class loader maintains a reference to the one or more classes. The class loader for the application is then de-referenced such that the class loader is unreachable.

Description

METHODS AND APPARATUS FOR IMPLEMENTING INDIVIDUAL CLASS LOADERS
BACKGROUND OF THE INVENTION
1. FIELD OF THE INVENTION
The present invention relates generally to computer software. More particularly, the present invention relates to methods and apparatus for implementing a class loader adapted for loading classes associated with an application.
2. DESCRIPTION OF THE RELATED ART
The digital television revolution is one of the most significant events in the history of broadcast television. With the advent of digital television, high speed data transfer is possible via satellite, cable and terrestrial television channels. Digital television will offer users more channels as well as significantly improved video and audio quality. Most importantly, digital television ushers in the age of true interactive television. For instance, digital receivers will be able to offer users a variety of enhanced services, from simple interactive quiz shows, to Internet over the air, and a mix of television and web-type content. As the market for digital television grows, content developers are looking for a feature-rich, cost-effective, and reliable software platform upon which to build the next generation of interactive television services such as Electronic Programming Guides, Video-On-Demand, and Enhanced Broadcasting. Java is a leading commercial object-oriented language designed as a portable language. A Java program can be written and compiled once and run on any compatible device that supports the JAVA™ PLATFORM. For instance, Java is incorporated into all major Web browsers. Thus, Java runs on any web-enabled computer via that computer's Web browser. As such, it offers great promise as the software platform for the next generation of set-top boxes and digital televisions. In object-oriented programming, runtime data are represented by objects. Each object is defined via its class, which determines the properties of an object. In other words, objects are individual instances of a class. To run a Java application, the related classes are loaded into memory. Instances of these classes are then constructed following the flow of the program. Most object-oriented languages require that all objects that are created be actively destroyed by the programmer when they are no longer needed. However, implementations of the Java Virtual Machine typically automate this process and perform garbage collection to increase the amount of available memory. Accordingly, objects are deleted or "garbage collected" automatically by the Java runtime environment when they are no longer referenced.
Although instances of classes that are no longer referenced are removed from memory through garbage collection, the associated classes are not removed from memory. Moreover, since Java is a dynamic language, class loading is commonly performed. However, there is currently no mechanism for unloading the classes, even when they are no longer needed. As a result, the JAVA PLATFORM will eventually store a large number of classes.
In the desktop environment, classes need not be unloaded since memory is relatively unlimited. Moreover, once the browser is turned off (or closed), the classes are cleared from memory. However, space is a valuable resource in the environment of embedded systems, particularly in the area of digital television. Moreover, in the digital television environment, it will be common to run multiple applications. For instance, when a television viewer changes the channel, each associated service will likely require that a new application with multiple classes be loaded. As a result, memory will continually be allocated to the loaded classes until the limited amount of memory is consumed. Once the memory is consumed, it will be impossible to run any further applications. It will therefore be desirable to monitor the memory utilization and remove those classes that are no longer needed by the applications. This is particularly important since it will be undesirable to reboot the television in the event of an error.
In view of the above, there is a need for improved ways to manage storage of classes in memory.
SUMMARY
The present invention enables classes to be dynamically unloaded from memory when they are no longer needed. This is accomplished, in part, through the use of an individual class loader associated with each application. In this manner, memory consumption within a digital television is managed to make better use of limited memory resources. According to one aspect of the invention, an application manager is adapted for constructing a class loader for an application. For instance, a specialized class loader may be constructed (e.g., instantiated) to load classes associated with an application that is to be loaded via a digital television receiver. Accordingly, the class loader is employed to load one or more classes associated with the application. According to another aspect of the invention, an application manager is adapted for monitoring and managing execution of the application and de-referencing the constructed class loader when execution of an application ends or when execution of the application is terminated (e.g., by a signal). Thus, when the application manager determines that the application has terminated, the classes are unloaded since they are no longer needed. This is accomplished, in part, by de-referencing the class loader for the application such that the class loader becomes unreachable. Since the class loader is the last to maintain a reference to the classes that it has loaded into the execution environment, these classes become unreachable when the class loader is de- referenced, provided no other instances in the runtime environment reference the classes. Accordingly, when garbage collection is performed, the classes are effectively unloaded.
According to yet another aspect of the invention, the present invention is implemented on a JAVA PLATFORM. The JAVA PLATFORM provides an ideal development and deployment platform for this emerging class of interactive services. The Java programming language provides content developers with a high degree of control and flexibility of the "look and feel" of their applications, enabling them to deliver the most dynamic and compelling interactive television experiences to their audience. The garbage collection process is leveraged to shift the burden of memory allocation and memory management from the programmer to the platform. In addition, interactive television applications written in the Java programming language offer security, extensibility, and portability across a diverse array of television receivers, saving content developers time and money getting their interactive applications to market. The present invention utilizes individual class loaders to load and unload classes associated with each application. Through the de-referencing of the appropriate class loaders when it is determined that the associated classes are no longer needed, the garbage collection process is leveraged to maximize the amount of available memory. This is particularly important in systems having limited memory, such as in a digital television receiver.
BRIEF DESCRIPTION OF THE DRAWINGS
The invention, together with further advantages thereof, may best be understood by reference to the following description taken in conjunction with the accompanying drawings in which:
FIG. 1 is a block diagram illustrating a system in which the present invention may be implemented. FIG. 2 is a block diagram illustrating one embodiment of the invention during the loading of classes.
FIG. 3 is a block diagram illustrating one embodiment of the invention during execution of an application.
FIG. 4 is a block diagram illustrating one embodiment of the invention upon completion of execution of the application.
FIG. 5 is a block diagram illustrating one embodiment of the invention after one round of garbage collection is completed. FIG. 6 is a process flow diagram illustrating one method of executing an application on a digital TV receiver according to one embodiment of the invention.
FIG. 7 is a process flow diagram illustrating one method of implementing an application manager to unload classes during execution of an application as shown in FIG. 6 according to one embodiment of the invention.
FIG. 8 is a block diagram illustrating a typical, general-purpose computer system suitable for implementing the present invention.
DETAILED DESCRIPTION OF THE PREFERRED
EMBODIMENTS
In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art, that the present invention may be practiced without some or all of these specific details. In other instances, well known process steps have not been described in detail in order not to unnecessarily obscure the present invention.
An invention is described herein that enables classes to be unloaded dynamically. More particularly, classes may each be represented by a class object, which includes the definition of the associated class. Therefore, the terms "class" and "class object" are used interchangeably throughout.
The invention is described within the context of a digital television and digital television receiver. FIG. 1 is a block diagram illustrating an exemplary digital television receiver. As shown, a signal is received via antenna 102 and tuned by tuner module 104, producing MPEG2 transport stream 106. De-multiplexer 108 then produces encrypted MPEG stream 110 including a video stream 112, an audio stream 114, and a data stream 116. These three streams are then processed by conditional access subsystem 118. For instance, the conditional access subsystem 118 may utilize key management information 120 as well as decryption information 122 (e.g., decryption algorithms). The conditional access subsystem 118 produces decrypted MPEG streams 123 including a video stream 124 and audio stream 125 as well as data 126, all of which are decrypted. A decoder 128 then processes the decrypted MPEG stream 123, and forwards the decoded video data to frame buffer 130 and transmits the decoded audio data to speaker 132.
A Java Virtual Machine (JVM) is one platform that may be used to implement the present invention by processing information received by a digital television receiver such as that illustrated in FIG. 1. More particularly, when the data 126 is processed, it could contain Java applications that are composed of many classes. It is therefore desirable to load and unload classes dynamically to minimize the memory consumption in a digital television or digital television receiver (or set-top box), which is typically limited in memory.
The present invention enables the loading and unloading of classes for each application through the instantiation of an individual class loader for each application. FIG. 2 is a block diagram illustrating one embodiment of the invention. As shown, an application manager 202 is provided to manage the loading of classes as well as the execution of applications on the platform. One method of implementing the application manager 202 will be described in further detail with reference to FIG. 7. More particularly, the loading of classes is managed, in part, through the creation of an individual class loader for each application. Thus, the application manager 202 instantiates a first class loader 204 adapted for loading classes associated with a first application (APP1). Similarly, the application manager 202 instantiates a second class loader 206 adapted for loading classes associated with a second application (APP2). The application manager 202 and the class loaders 204 and 206 are stored in a memory 208. The class loaders 204 and 206 then load classes for the respective applications. More particularly, as shown, the first application class loader 204 loads a first set of classes 210 associated with the first application and the second application class loader 206 loads a second set of classes 212 associated with the second application. In this manner, the first and second sets of application classes 210 and 212 are loaded into execution environment 214 (e.g., JVM). Once loaded, the classes may be accessed during execution of each of the applications.
Referring now to FIG. 3, a block diagram illustrating one embodiment of the invention upon completion of the class loading process is presented. FIG. 3 is, for example, associated with execution of first and second applications by the JVM. As shown, the application manager 202 maintains a link (e.g., reference) to the first application class loader 204 as well as to the second application class loader 206. In addition, the first application class loader 204 maintains a link (e.g., reference) to the first set of application classes 302. Similarly, the second application class loader 206 maintains a link (e.g., reference) to the second set of application classes 304. For example, each link may be implemented through the use of a pointer. The application manager 202 continues to reference all of the class loaders 204 and 206 during execution of the respective applications. In addition, the class loaders 204 and 206 reference the application classes 302 and 304, respectively, during execution of the respective applications. In one implementation, the first and second sets of application classes are stored in a JVM stack residing in memory (e.g., memory 200). As an example, the memory may be Random Access Memory (RAM).
When execution of one of the applications ends or the application is stopped prior to completion, the application manager 202 de-references the appropriate class loader. FIG. 4 is a block diagram illustrating one embodiment of the invention following completion of execution of the second application. When execution of the second application ends or is stopped prematurely, the application manager 202 dereferences the second application loader 206. In other words, the application manager 202 removes the link to the second application loader as shown at 402. For example, the original reference variable to the second application loader 206 may be set to null. For instance, a reference variable to the second application loader 206 may be set to null After the second class loader 206 is de-referenced, the second class loader 206 becomes an unreachable object in memory. As described above, when an object (i.e., instance of a class) or a class has no reference to it, it is "unreachable" and will therefore be garbage collected. Since the second class loader 206, as the last reference to the second set of application classes 304 and associated instances, is unreachable, garbage collection 406 subsequently removes the associated classes 304 (e.g., class objects) as well as all instances of the classes 304 (i.e., objects), since they are also unreachable at the moment. Thus, classes referenced by the de-referenced class loader 206 are garbage collected and the allocated memory is returned to the available memory pool. Additional details on the JVM, including "unreachability" and garbage collection, are contained in "The Java Virtual Machine Specification", Second Edition, Lindholm, Yellin, ISBN 0-201-43294-3, which is hereby incorporated by reference. After garbage collection is completed, all unreachable classes and objects are no longer resident in memory. As shown in FIG. 5, once garbage collection is performed on the system shown in FIG. 4, the unreachable class loader, unreachable classes and associated instances are deleted from memory. As a result, only the first application loader 204 and the first set of classes 304 remain. Consequently, the invention serves to free up memory resources in a dynamic manner so that the limited memory resources (e.g., of the digital television receiver) can be better utilized. FIG. 6 is a process flow diagram illustrating one method of executing an application transmitted via a digital TV receiver according to one embodiment of the invention. The process begins at block 602 and at block 604 the digital television receiver is turned on. The Java™ environment is then started at block 606. An application manager is then constructed at block 608 and run at block 610.
A variety of digital television services may be received by a digital television receiver such as that illustrated in FIG. 1. In addition to receiving a multitude of channels, these services could range from interactive television, to near video-on- demand, to specialized programming. When a service is selected by a user at block 612, an application associated with the selected service may be received via the digital television receiver at block 614. For instance, when the user selects a Disney service, there might be a Disney application that is received for enhanced viewing experience. The application manager is responsible for monitoring and managing the execution of the application. For instance, the application manager is signaled to load and execute the application at block 616. When a start signal is received (e.g., via the digital television receiver) at block 618 to start the application, the application manager is signaled to start the application at block 620. The application executes until a stop signal is received (e.g., via the digital television receiver) at block 622, and the application manager is signaled to stop the application at block 624. The process ends at block 626.
The application manager may be implemented in a variety of ways to ensure that classes that are loaded are unloaded when they are no longer needed by an application. FIG. 7 is a process flow diagram illustrating one method of implementing an application manager to unload classes during execution of an application as shown in FIG. 6 according to one embodiment of the invention. The process begins at block 702 and at block 704, the application manager performs initialization as appropriate. In addition, the application manager is responsible for managing execution of one or more applications. Thus, the application manager waits for a signal (e.g., via the television receiver) as shown in FIG. 6 prior to blocks 614 and 616 indicating that the application manager is to load an application (e.g., received from the broadcast data stream), start an application, or stop an application. The application manager therefore waits for such a signal as shown at block 706. When the application manager receives a load signal indicating that the application manager is to load the application at block 708, the application manager constructs a class loader for the application 710. As described above, the class loader is designed to load one or more classes associated with the application. When the application manager receives a start signal at block 712, the application manager employs the appropriate class loader to load the application classes associated with the application at block 714. For instance, the application classes may be loaded according to security constraints of the application. Thus, the class loader can perform appropriate security checks to determine if the application can be loaded. The application manager then begins execution of the application at block 716 and waits at block 718 until the application ends or until the application is terminated prior to its completion. The application manager recognizes the termination or completion of an application through the receipt of a signal or message from the application or other process indicating that execution of the application is terminated.
When the application manager receives a stop signal to stop execution of the application prior to its completion as shown at block 720, the application is destroyed (e.g., deleted) at block 722. Cleanup associated with the destroyed application is then performed at block 724. The class loader for the application is then de-referenced at block 726.
If the application completes execution at block 728, the application sends a signal (e.g., from the application or the broadcast environment via the receiver) to the application manager to initiate cleanup of the application. For instance, any files associated with the application are deleted and any associated threads are removed. In addition, any data used for bookkeeping such as references to each application may be deleted when no longer needed. The process then continues at block 724 to cleanup the application and de-reference the class loader for the application at block 726. In other words, de-referencing may be accomplished by removing a link between the class loader and the application manager by setting a pointer (e.g., reference variable associated with the application manager) to the class loader to null. As another example, the class loader may be marked as unreachable. Since the class loader is the last to maintain a reference to the classes that it has loaded into the execution environment, these classes become unreachable when the class loader is dereferenced. Accordingly, when garbage collection is performed, the classes are effectively unloaded.
Garbage collection may be performed in a variety of ways to unload classes associated with a de-referenced class loader. For instance, garbage collection may be performed in two separate passes. In the first pass, garbage collection may search for all objects and classes that are unreachable. At this time, it may be determined that the class loader is unreachable, as well as the classes loaded by it. The classes associated with the unreachable class loader may be marked as unreachable at this time. Moreover, since the class loader is unreachable, garbage collection frees up the memory allocated to the de-referenced class loader. In the second pass, the classes loaded by the now non-existing class loader that were marked as unreachable in the previous pass will be found and removed from memory.
The present invention may be implemented on any suitable computer system. FIG. 8 illustrates a typical, general-purpose computer system 1002 suitable for implementing the present invention. The computer system may take any suitable form. For example, the computer system may be integrated with a digital television receiver or set top box.
Computer system 1030 or, more specifically, CPUs 1032, may be arranged to support a virtual machine, as will be appreciated by those skilled in the art. The computer system 1002 includes any number of processors 1004 (also referred to as central processing units, or CPUs) that may be coupled to memory devices including primary storage device 1006 (typically a read only memory, or ROM) and primary storage device 1008 (typically a random access memory, or RAM). As is well known in the art, ROM acts to transfer data and instructions uni-directionally to the CPUs 1004, while RAM is used typically to transfer data and instructions in a bi-directional manner. Both the primary storage devices 1006, 1008 may include any suitable computer-readable media. The CPUs 1004 may generally include any number of processors. A secondary storage medium 1010, which is typically a mass memory device, may also be coupled bi-directionally to CPUs 1004 and provides additional data storage capacity. The mass memory device 1010 is a computer-readable medium that may be used to store programs including computer code, data, and the like. Typically, the mass memory device 1010 is a storage medium such as a hard disk which is generally slower than primary storage devices 1006, 1008.
The CPUs 1004 may also be coupled to one or more input/output devices 1012 that may include, but are not limited to, devices such as video monitors, track balls, mice, keyboards, microphones, touch-sensitive displays, transducer card readers, magnetic or paper tape readers, tablets, styluses, voice or handwriting recognizers, or other well-known input devices such as, of course, other computers. Finally, the CPUs 1004 optionally may be coupled to a computer or telecommunications network, e.g., an internet network or an intranet network, using a network connection as shown generally at 1014. With such a network connection, it is contemplated that the CPUs 1004 might receive information from the network, or might output information to the network in the course of performing the above- described method steps. Such information, which is often represented as a sequence of instructions to be executed using the CPUs 1004, may be received from and outputted to the network, for example, in the form of a computer data signal embodied in a carrier wave.
The present invention enables classes to be unloaded when it is determined that they are no longer needed. Through the use of an individual class loader for each application, classes are effectively loaded and unloaded when the classes are no longer needed (e.g., when the application ends or is terminated). Moreover, through the use of customized class loaders, an added level of security is provided to prevent unauthorized applications from being loaded and executed.
Although illustrative embodiments and applications of this invention are shown and described herein, many variations and modifications are possible which remain within the concept, scope, and spirit of the invention, and these variations would become clear to those of ordinary skill in the art after perusal of this application. For instance, the present invention is described as enabling classes to be unloaded within the context of a digital television receiver. However, the present invention may be used to load and unload classes in other contexts. Moreover, although the present invention is described as being implemented on a JAVA
PLATFORM, it may also be implemented on a variety of platforms or contexts in which object-oriented languages are used. Thus, "unreachability" may refer generally to the unavailability of those entities that are "de-referenced". Moreover, the above described process blocks are illustrative only. Therefore, the loading and unloading of classes may be performed using alternate process blocks. Accordingly, the present embodiments are to be considered as illustrative and not restrictive, and the invention is not to be limited to the details given herein, but may be modified within the scope and equivalents of the appended claims.

Claims

CLAIMSWhat is claimed is:
1. A method of loading and unloading classes associated with an application, the method comprising: constructing a class loader for the application, the class loader being adapted for loading classes associated with the application; employing the class loader to load one or more classes associated with the application such that the class loader maintains a reference to the one or more classes; and de-referencing the class loader for the application such that the class loader becomes unreachable.
2. The method as recited in claim 1, wherein de-referencing the class loader includes marking the class loader as unreachable.
3. The method as recited in claim 1, wherein de-referencing includes setting a reference to the class loader to null.
4. The method as recited in claim 1, wherein de-referencing the class loader is performed when the one or more classes are no longer needed.
5. The method as recited in claim 1 , wherein the application is a Java program.
6. The method as recited in claim 1, further comprising: executing the application; wherein de-referencing the class loader is performed when execution of the application is terminated.
7. The method as recited in claim 1 , further comprising: destroying the application; wherein de-referencing the class loader for the application is performed when the application is destroyed.
8. The method as recited in claim 1, further comprising: performing garbage collection to delete the one or more classes referenced by the de-referenced class loader.
9. The method as recited in claim 1 , further comprising: marking the de-referenced class loader as unreachable.
10. The method as recited in claim 1, further comprising: marking the one or more classes referenced by the de-referenced class loader as unreachable.
11. The method as recited in claim 8, wherein performing garbage collection to delete the one or more classes referenced by the de-referenced class loader comprises: determining that the class loader is unreachable; ascertaining that the unreachable class loader has one or more classes associated therewith; and marking the one or more classes as unreachable.
12. The method as recited in claim 11 , further comprising: freeing memory associated with the class loader; and freeing memory associated with the one or more classes.
13. The method as recited in claim 1, further comprising: searching for all objects and classes that are unreachable; and deleting the unreachable objects and classes from associated memory locations.
14. The method as recited in claim 1, further comprising: releasing memory consumed by the de-referenced class loader and associated classes.
15. The method as recited in claim 14, wherein releasing memory consumed by the de-referenced class loader and associated classes comprises: marking the class loader as unreachable; searching for unreachable objects in memory; deleting the unreachable class loader from an associated memory location; ascertaining that the unreachable class loader has one or more associated classes; marking the one or more associated classes as unreachable; searching for unreachable classes in memory; and deleting the one or more associated classes from associated memory locations.
16. The method as recited in claim 15, wherein deleting the unreachable class loader from an associated memory location is performed in a first pass and deleting the one or more associated classes from associated memory locations is performed in a second pass.
17. A method of loading and unloading classes associated with multiple applications, the method comprising: constructing a class loader for each one of a plurality of applications such that each one of a plurality of class loaders is adapted for loading classes associated with one of the plurality of applications; employing one or more of the plurality of class loaders to load one or more classes associated with the corresponding application such that the one or more of the class loaders each maintain a reference to the classes associated with the corresponding application; and rendering the one or more of the plurality of class loaders unreachable when the corresponding application has completed its operation.
18. The method as recited in claim 17, wherein rendering the one or more of the plurality of class loaders unreachable comprises de-referencing the one or more of the plurality of class loaders.
19. The method as recited in claim 17, further comprising: performing garbage collection to delete classes referenced by the unreachable class loaders.
20. A method of loading and unloading classes associated with an application, the method comprising: receiving a load signal indicating that an application is to be loaded; constructing a class loader for the application, the class loader being adapted for loading classes associated with the application; receiving a start signal indicating that the application is to be started; employing the class loader to load one or more classes associated with the application such that the class loader maintains a reference to the one or more classes; and de-referencing the class loader for the application such that the class loader becomes unreachable.
21. The method as recited in claim 20, wherein constructing the class loader is performed in response to receiving the load signal and employing the class loader to load one or more classes associated with the application is performed in response to receiving the start signal.
22. The method as recited in claim 20, further comprising: receiving a stop signal indicating that the application is to be stopped.
23. The method as recited in claim 22, wherein de-referencing the class loader is performed when the stop signal is received.
24. The method as recited in claim 20, wherein de-referencing the class loader is performed when execution of the application completes or when execution of the application is terminated by an application manager responsible for constructing the class loader.
25. A method of loading classes associated with one or more applications, the method comprising: (a) constructing an application manager adapted for constructing a class loader for an application and de-referencing the constructed class loader when execution of the application ends or when execution of the application is terminated, the class loader being adapted for loading classes associated with the application;
(b) receiving an application;
(c) employing the application manager to construct a class loader for the received application; and
(d) employing the class loader to load one or more classes associated with the application such that the class loader maintains a reference to the one or more classes.
26. The method as recited in claim 25, further comprising: employing the application manager to de-reference the class loader for the application such that the class loader is unreachable.
27. The method as recited in claim 25, further comprising repeating steps (b), (c), and (d) for each application received.
28. The method as recited in claim 27, further comprising de-referencing a class loader associated with an application when execution of the application ends or execution of the application is terminated.
29. A system for loading and unloading classes associated with one or more applications, the system comprising: a plurality of class loaders, each one of the plurality of class loaders being adapted for loading classes associated with one of a plurality of applications; and an application manager adapted for employing one of the plurality of class loaders to load classes associated with one of the plurality of applications and adapted for de-referencing the one of the plurality of class loaders in response to a predetermined condition.
30. A system for loading classes associated with one or more applications, the system comprising: a memory; and a processor, the processor in conjunction with the memory implementing an application manager adapted for constructing a class loader for an application, the class loader being adapted for loading classes associated with the application, the application manager operating to de-reference the constructed class loader when execution of the application ends or when execution of the application is terminated by the application manager.
31. The system as recited in claim 30, further comprising: a first class loader adapted for loading classes associated with a first application.
32. The system as recited in claim 31, wherein the application manager is linked to the first class loader.
33. The system as recited in claim 31 , further including: a memory storing therein a first set of classes associated with the first application; wherein the first class loader is linked to the first set of classes.
34. The system as recited in claim 30, wherein the system is a digital television.
35. The system as recited in claim 30, wherein the system is a digital television receiver.
36. A digital television receiver for loading and unloading classes associated with one or more applications, the system comprising: a plurality of class loaders, each one of the plurality of class loaders being adapted for loading classes associated with one of a plurality of applications; and an application manager adapted for employing one of the plurality of class loaders to load classes associated with one of the plurality of applications and adapted for de-referencing the one of the plurality of class loaders in response to a predetermined condition.
37. In a digital television, a system for loading classes associated with one or more applications, the system comprising: a memory; and a processor, the processor in conjunction with the memory implementing an application manager adapted for constructing a class loader for an application, the class loader being adapted for loading classes associated with the application, the application manager operating to de-reference the constructed class loader when execution of the application ends or when execution of the application is terminated by the application manager.
38. A computer program product adapted for causing a processor to load and unload classes associated with an application, the computer program product comprising: a computer-readable medium storing thereon computer-readable instructions, including: instructions for constructing a class loader for the application, the class loader being adapted for loading classes associated with the application; instructions for employing the class loader to load one or more classes associated with the application such that the class loader maintains a reference to the one or more classes; and instructions for de-referencing the class loader for the application such that the class loader is unreachable.
39. A computer program product adapted for causing a processor to load classes associated with one or more applications, the computer program product comprising: a computer-readable medium storing thereon computer-readable instructions, including: instructions for constructing an application manager adapted for constructing a class loader for an application and de-referencing the constructed class loader when execution of the application ends or when execution of the application is terminated, the class loader being adapted for loading classes associated with the application; instructions for receiving an application; instructions for employing the application manager to construct a class loader for the received application; instructions for employing the class loader to load one or more classes associated with the application such that the class loader maintains a reference to the one or more classes; and instructions for de-referencing the class loader for the application such that the class loader is unreachable.
PCT/US2000/019233 1999-07-13 2000-07-13 Methods and apparatus for implementing individual class loaders WO2001004744A2 (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2001510084A JP2003504754A (en) 1999-07-13 2000-07-13 Method and apparatus for implementing individual class loaders
EP00945394A EP1194838B1 (en) 1999-07-13 2000-07-13 Methods and apparatus for implementing individual class loaders
CA002378588A CA2378588A1 (en) 1999-07-13 2000-07-13 Methods and apparatus for implementing individual class loaders
KR1020027000225A KR20020035558A (en) 1999-07-13 2000-07-13 Methods and apparatus for implementing individual class loaders
DE60038377T DE60038377D1 (en) 1999-07-13 2000-07-13 METHOD AND DEVICE FOR IMPLEMENTING INDIVIDUAL CLASS LOADERS
AU59345/00A AU5934500A (en) 1999-07-13 2000-07-13 Methods and apparatus for implementing individual class loaders

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14342899P 1999-07-13 1999-07-13
US60/143,428 1999-07-13
US09/465,995 1999-12-16
US09/465,995 US6701334B1 (en) 1999-07-13 1999-12-16 Methods and apparatus for implementing individual class loaders

Publications (2)

Publication Number Publication Date
WO2001004744A2 true WO2001004744A2 (en) 2001-01-18
WO2001004744A3 WO2001004744A3 (en) 2001-07-19

Family

ID=26841023

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2000/019233 WO2001004744A2 (en) 1999-07-13 2000-07-13 Methods and apparatus for implementing individual class loaders

Country Status (10)

Country Link
US (1) US6701334B1 (en)
EP (1) EP1194838B1 (en)
JP (3) JP2003504754A (en)
KR (1) KR20020035558A (en)
CN (1) CN1156753C (en)
AT (1) ATE389912T1 (en)
AU (1) AU5934500A (en)
CA (1) CA2378588A1 (en)
DE (1) DE60038377D1 (en)
WO (1) WO2001004744A2 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1345417A1 (en) 2002-03-14 2003-09-17 Sony Service Center (Europe) N.V. Method and digital television unit for operating broadcast applications
NL1021289C2 (en) * 2002-08-16 2004-02-17 Tryllian Holding N V Method for rendering instantaneous different types of programming modules in computer system has number of objects for each module, whereby each object is an instance of a class
JP2005505849A (en) * 2001-10-19 2005-02-24 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ How to compile bytecode into native code
WO2006035405A2 (en) * 2004-09-30 2006-04-06 Koninklijke Philips Electronics N.V. System and method for reducing the start-up time of mhp applications
US8042189B2 (en) 2002-03-20 2011-10-18 Research In Motion Limited System and method to force a mobile device into a secure state
US8261358B2 (en) 2002-03-20 2012-09-04 Research In Motion Limited System and method of secure garbage collection on a mobile device
US10635595B2 (en) 2017-07-28 2020-04-28 Citrix Systems, Inc. Dynamic delete command partitioning with disk caching

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6701334B1 (en) * 1999-07-13 2004-03-02 Sun Microsystems, Inc. Methods and apparatus for implementing individual class loaders
US6901586B1 (en) * 2000-11-06 2005-05-31 Sun Microsystems, Inc. Safe language static variables initialization in a multitasking system
US7237237B2 (en) 2001-07-24 2007-06-26 The Mathworks, Inc. Designating an object for destruction
CN1407780A (en) * 2001-08-13 2003-04-02 国际商业机器公司 Method and device for maintaining course continuance as multiple terminals accessing service content
GB2381090B (en) * 2001-10-17 2005-02-02 Bitarts Ltd Software loading
JP4136639B2 (en) * 2002-12-13 2008-08-20 キヤノン株式会社 Service providing system and service providing apparatus
US20060179465A1 (en) * 2003-07-24 2006-08-10 Koninklijke Philips Electroncs N.V. Handling feature availability in a broadcast
US7823143B2 (en) * 2005-04-29 2010-10-26 Sap Ag Efficient algorithm for performing multi-parent class loading
US7421540B2 (en) * 2005-05-03 2008-09-02 International Business Machines Corporation Method, apparatus, and program to efficiently calculate cache prefetching patterns for loops
US20080005160A1 (en) * 2006-06-30 2008-01-03 Microsoft Corporation Assembly Sensitive Dynamic Classloading Of .Net Types in J#
WO2008099453A1 (en) * 2007-02-09 2008-08-21 Fujitsu Limited Degeneratuion method and information processor
JP5157537B2 (en) * 2008-03-06 2013-03-06 日本電気株式会社 MEMORY MANAGEMENT DEVICE, SYSTEM, METHOD, AND PROGRAM
US8489653B2 (en) * 2011-02-08 2013-07-16 International Business Machines Corporation Incremental class unloading in a region-based garbage collector
US8910138B2 (en) 2012-05-23 2014-12-09 Oracle International Corporation Hot pluggable extensions for access management system
KR101463856B1 (en) 2012-09-13 2014-11-19 뱅크웨어글로벌 주식회사 System and method for non-disruptive replacing of application in java based system
JP5950288B2 (en) 2014-09-16 2016-07-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Apparatus and method for realizing programming language processing system
US10114745B2 (en) * 2014-10-07 2018-10-30 Red Hat, Inc. Assisted garbage collection in a virtual machine
EP3093761A1 (en) * 2015-05-13 2016-11-16 Gemalto Sa Integrated circuit card adapted to transfer first data from a first application for use by a second application
CN105404589B (en) * 2015-10-29 2019-04-30 天脉聚源(北京)教育科技有限公司 A kind of rubbish recovering method and device
EP3693851B1 (en) * 2017-10-09 2023-01-11 Huawei Technologies Co., Ltd. Class unloading method and electronic device
KR102116814B1 (en) 2018-06-22 2020-05-29 주식회사 티맥스 소프트 Application hot deploy method to guarentee application version consistency and computer program stored in computer readable medium therfor
KR102116813B1 (en) 2018-06-22 2020-05-29 주식회사 티맥스 소프트 Unnecessary resource recognition and release plan in application hot deploy on distributed system

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4912628A (en) 1988-03-15 1990-03-27 International Business Machines Corp. Suspending and resuming processing of tasks running in a virtual machine data processing system
FR2679351B1 (en) 1991-07-15 1995-01-27 Bull Sa OPERATING SYSTEM FOR A UNIVERSAL DEVICE FOR COUPLING A COMPUTER BUS TO A SPECIFIC LINK OF A NETWORK.
US5727147A (en) * 1995-12-08 1998-03-10 Sun Microsystems, Inc. System and method for resolving symbolic references to externally located program files
US5815718A (en) * 1996-05-30 1998-09-29 Sun Microsystems, Inc. Method and system for loading classes in read-only memory
US6085030A (en) * 1997-05-02 2000-07-04 Novell, Inc. Network component server
EP0908821A1 (en) 1997-10-07 1999-04-14 CANAL+ Société Anonyme Digital code interpreter
US6513155B1 (en) * 1997-12-12 2003-01-28 International Business Machines Corporation Method and system for merging event-based data and sampled data into postprocessed trace output
US6266716B1 (en) * 1998-01-26 2001-07-24 International Business Machines Corporation Method and system for controlling data acquisition over an information bus
US6374286B1 (en) * 1998-04-06 2002-04-16 Rockwell Collins, Inc. Real time processor capable of concurrently running multiple independent JAVA machines
US6496871B1 (en) * 1998-06-30 2002-12-17 Nec Research Institute, Inc. Distributed agent software system and method having enhanced process mobility and communication in a computer network
US6202208B1 (en) * 1998-09-29 2001-03-13 Nortel Networks Limited Patching environment for modifying a Java virtual machine and method
GB2343021A (en) * 1998-10-19 2000-04-26 Ibm Class loading model for object oriented programming
US6279030B1 (en) * 1998-11-12 2001-08-21 International Business Machines Corporation Dynamic JAVA™ class selection and download based on changeable attributes
US6519594B1 (en) * 1998-11-14 2003-02-11 Sony Electronics, Inc. Computer-implemented sharing of java classes for increased memory efficiency and communication method
US6430564B1 (en) * 1999-03-01 2002-08-06 Hewlett-Packard Company Java data manager for embedded device
US6430570B1 (en) * 1999-03-01 2002-08-06 Hewlett-Packard Company Java application manager for embedded device
US6507946B2 (en) * 1999-06-11 2003-01-14 International Business Machines Corporation Process and system for Java virtual method invocation
US6701334B1 (en) * 1999-07-13 2004-03-02 Sun Microsystems, Inc. Methods and apparatus for implementing individual class loaders
US6442565B1 (en) * 1999-08-13 2002-08-27 Hiddenmind Technology, Inc. System and method for transmitting data content in a computer network

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
FOOTE, B. & MITCHELL, J.D.: "Singletons vs. class (un)loading" JAVAWORLD, [Online] XP002157434 Retrieved from the Internet: <URL:http://www.javaworld.com/javaworld/javatips/jw-javatip52_p.html> [retrieved on 2001-01-16] *
MCDOWELL, C.E. & BALDWIN, E.A.: "Unloading Java Classes that Contain Static Fields" TECHNICAL REPORT UCSC-CRL-97-18, [Online] 25 August 1997 (1997-08-25), pages 1-9, XP002157433 Santa Cruz (CA) Retrieved from the Internet: <URL:http://cs-tr.cs.cornell.edu:80/Dienst/UI/1.0/Display/ncstrl.ucsc_cse/UCSC-CRL-97-18> [retrieved on 2001-01-16] *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005505849A (en) * 2001-10-19 2005-02-24 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ How to compile bytecode into native code
EP1345417A1 (en) 2002-03-14 2003-09-17 Sony Service Center (Europe) N.V. Method and digital television unit for operating broadcast applications
US9311237B2 (en) 2002-03-20 2016-04-12 Citrix Systems International Gmbh System and method of secure garbage collection on a mobile device
US8042189B2 (en) 2002-03-20 2011-10-18 Research In Motion Limited System and method to force a mobile device into a secure state
US8261358B2 (en) 2002-03-20 2012-09-04 Research In Motion Limited System and method of secure garbage collection on a mobile device
US8522355B2 (en) 2002-03-20 2013-08-27 Research In Motion Limited System and method to force a mobile device into a secure state
US8973148B2 (en) 2002-03-20 2015-03-03 Blackberry Limited System and method of secure garbage collection on a mobile device
US9558113B2 (en) 2002-03-20 2017-01-31 Citrix Systems International Gmbh Secure garbage collection on a mobile device
US10210081B2 (en) 2002-03-20 2019-02-19 Citrix Systems International Gmbh Secure garbage collection on a mobile device
US10642730B2 (en) 2002-03-20 2020-05-05 Citrix Systems International Gmbh Secure garbage collection on a mobile device
NL1021289C2 (en) * 2002-08-16 2004-02-17 Tryllian Holding N V Method for rendering instantaneous different types of programming modules in computer system has number of objects for each module, whereby each object is an instance of a class
WO2006035405A2 (en) * 2004-09-30 2006-04-06 Koninklijke Philips Electronics N.V. System and method for reducing the start-up time of mhp applications
WO2006035405A3 (en) * 2004-09-30 2006-10-05 Koninkl Philips Electronics Nv System and method for reducing the start-up time of mhp applications
US10635595B2 (en) 2017-07-28 2020-04-28 Citrix Systems, Inc. Dynamic delete command partitioning with disk caching

Also Published As

Publication number Publication date
JP2003504754A (en) 2003-02-04
AU5934500A (en) 2001-01-30
ATE389912T1 (en) 2008-04-15
CA2378588A1 (en) 2001-01-18
KR20020035558A (en) 2002-05-11
CN1156753C (en) 2004-07-07
EP1194838B1 (en) 2008-03-19
WO2001004744A3 (en) 2001-07-19
US6701334B1 (en) 2004-03-02
CN1360694A (en) 2002-07-24
DE60038377D1 (en) 2008-04-30
JP2014059906A (en) 2014-04-03
EP1194838A2 (en) 2002-04-10
JP2011233171A (en) 2011-11-17

Similar Documents

Publication Publication Date Title
US6701334B1 (en) Methods and apparatus for implementing individual class loaders
US6874145B1 (en) Methods and apparatus for implementing an application lifecycle design for applications
EP1194840B1 (en) Digital television receiver for managing execution of an application according to an application lifecycle
JP3781454B2 (en) Method and apparatus for processing audio-video interaction signals
CN1264354C (en) Method and apparatus for selecting multicast IP data transmitted in broadcast streams
JP4895424B2 (en) Multi-user multimedia terminal
US6976268B2 (en) Methods and apparatus for efficiently accessing periodically broadcast data
US20020073218A1 (en) Stream device management system for multimedia clients in a broadcast network architecture
US7257812B1 (en) Methods and apparatus for managing an application
US6799319B2 (en) Method and apparatus for application packages and delegate packages to adopt and export standard execution state machine interfaces
WO2001004868A1 (en) Methods and apparatus for creating a video window with parameters defining position and scaling factor
US8914607B2 (en) Broadcast receiving apparatus and memory managing method thereof
US20050022255A1 (en) Telecommunication device and method of multimedia data processing via telecommunication device
US20080209453A1 (en) System and Method for Reducing the Start-up Time of Mhp Applications
CN1820251A (en) Method of executing software applications
KR100691120B1 (en) Middleware and method for managing memory error
JP4303884B2 (en) Modem control
López et al. A MHP Receiver over RT-Linux for Digital TV.

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
AK Designated states

Kind code of ref document: A3

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A3

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

WWE Wipo information: entry into national phase

Ref document number: 59345/00

Country of ref document: AU

WWE Wipo information: entry into national phase

Ref document number: 2000945394

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2378588

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 1020027000225

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 008102597

Country of ref document: CN

WWP Wipo information: published in national office

Ref document number: 2000945394

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWP Wipo information: published in national office

Ref document number: 1020027000225

Country of ref document: KR