Bytecode Insertion for Per-Application Memory Measurement

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In multi-function peripherals (MFPs), it is challenging to measure the memory usage of each application when multiple applications are executed on a single process without modifying the existing applications, as the total memory usage is known but individual usage is difficult to determine.

Innovation Solution

An information processing apparatus and method that inserts bytecode into a class file to tally resource usage information for each application, allowing for registration and storage of resource usage data, enabling measurement of memory usage for each application without modifying existing applications.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Use of energy by moving object

If multiple applications are executed on a single process to suppress CPU and memory usage, then resource efficiency is improved, but the ability to measure individual application memory usage deteriorates

Engineering Contradiction:
Improvememory usage efficiencyVSAvoidindividual application memory usage measurement
Core Design Contradiction:
Use of energy by moving objectVSMeasurement precision

Solution Approach 1:

The patent segments the monitoring function by inserting separate bytecode instructions into each application's class file. Each application has its own bytecode that independently tallies memory usage information, allowing individual measurement while running on a shared process. The tallying unit then processes these segmented measurements to provide per-application memory usage data.

Inventive Principle:
Principle #1Segmentation

2Measurement precision

If existing applications are modified to perform memory usage measurement, then measurement capability is improved, but application complexity and modification requirements worsen

Engineering Contradiction:
Improvememory usage measurement capabilityVSAvoidapplication modification complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent introduces bytecode as an intermediary layer between the existing applications and the memory measurement function. Instead of modifying application logic directly, bytecode instructions are inserted into class files to act as mediators that automatically tally memory usage. This intermediary approach enables measurement capability without requiring changes to application source code or increasing application complexity.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Measurement precision

If bytecode is inserted into class files to tally resource usage, then individual application measurement is improved, but system complexity worsens

Engineering Contradiction:
Improveper application resource usage measurementVSAvoidbytecode insertion and tallying system complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent performs preliminary action by inserting bytecode into class files before the applications are executed. The bytecode insertion is done in advance during system setup or application loading, so that when applications run, the measurement functionality is already embedded and automatic. This preliminary preparation reduces the complexity of real-time measurement implementation.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10089211B2Information processing apparatus that executes processing by using a bytecode, method for controlling the same, and non-transitory computer-readable medium
Publication Date: 2018.10.02 CANON KK
  • US10089211B2 patent drawing
  • US10089211B2 patent drawing
  • US10089211B2 patent drawing

AI summary

An information processing apparatus comprises: an insertion unit that inserts, into a class file that corresponds to one application, a first bytecode for tallying information about a resource used by an object generated by execution of a bytecode that is included in the class file; and a tallying unit that, if an application generates an object, tallies information about a resource used by the object generated by the application, wherein the one application that has executed the first bytecode is identified by execution of the first bytecode, the one application thus identified and information about a resource used by a generated object are registered to a storage unit in association with each other, and the tallying unit tallies a resource usage amount for each application based on the information registered to the storage unit.