RAM memory concerns|OPC UA Implementation: Stacks, Tools, and Samples|Forum|OPC Foundation

Avatar
Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
sp_Feed sp_PrintTopic sp_TopicIcon
RAM memory concerns
Avatar
Andy Rehn
New Member
Members
Forum Posts: 1
Member Since:
03/03/2026
sp_UserOfflineSmall Offline
1
05/20/2026 - 23:35
sp_Permalink sp_Print

Hi,

We are developing an OPC UA server based on on the library 'OPCFoundation.NetStandard.Opc.Ua.Server'. The server exposes data of building automation controllers (up to 500 devices). We are now a bit worried that the address space will take up too much RAM, since each object is represented by a number of nodes that must be stored in memory.

What generally consumes the most memory in an OPC UA server? Is it the storage of the address space, or other factors such as subscriptions and monitored items?

Please guide us regarding memory consumption in an OPC UA server. Maybe we're worrying about nothing?

 

How we are currently working:

We model our object types in a ModelDesign.xml file and then compile it with ModelCompiler. Then we load the .uanodes file generated by the compiler in our node manager class. To add an object (set of nodes) to the address space of the server we create an object instance of one of the classes that are generated by the compiler and then call CreateNode with that instance as inparameter (we also create references). As we understand the address space (all nodes) are cached in CustomNodeManager2::m_predefinedNodes.

Avatar
Randy Armstrong
Admin
Forum Posts: 1671
Member Since:
05/30/2017
sp_UserOfflineSmall Offline
2
05/21/2026 - 16:02
sp_Permalink sp_Print

The generated C# classes are great for small servers or if a rapid prototype is needed, however, if your production application has high requirements you will likely want to invest a NodeManager that is designed for your data.

The understand the value of this approach you must see a UA information model as a window on your data rather than a database.

What this means is you do not need represent a device as 10+ nodes in memory. You instead build a NodeId structure that allows to response to Browse/Read/Write/Call on demand.

This means the only thing you actually need in memory is a structure that describes your device. All of the information associated with various Nodes used to represent your device are collected on demand by merging the static model with the device specific data..

To illustrate this concept a NodeManager for 100 million Nodes was implemented here:

https://github.com/OPCFoundati.....moryBuffer

Forum Timezone: America/Phoenix
Most Users Ever Online: 975
Currently Online:
Guest(s) 24
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Forum Stats:
Groups: 2
Forums: 10
Topics: 1519
Posts: 5141