[SNMP4J] DefaultUDPTransportMapping - java.lang.OutOfMemoryError

Yasen Simeonov(NeterraNMT) ysimeonov at neterra.net
Fri Aug 14 14:16:02 CEST 2009


Thank you,
this solve my problem :)

Best regars,
Yasen

Frank Fock написа:
> Hi Yasen,
>
> By creating a TransportMapping you use 1MB of Memory
> by default (with standard Java stack size), because each
> TransportMapping uses its own Thread.
>
> Please keep in mind, a TransportMapping is a transport
> mapping and *not* a connection! Thus, to access millions of
> UDP target addresses, you need only a single (UDP) transport
> mapping.
>
> Best regards,
> Frank
>
>
> Yasen Simeonov(NeterraNMT) schrieb:
>> Hi Frank,
>>
>> I have a List that contain objects<PortCrc> with info about devices 
>> and ifDesc,
>> they are about 100.I am trying to get errors from the ports on every 
>> device.
>> Unfortunately i have next runtime error:
>>
>> Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
>> at 
>> org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread.<init>(DefaultUdpTransportMapping.java:286) 
>>
>> at 
>> org.snmp4j.transport.DefaultUdpTransportMapping.listen(DefaultUdpTransportMapping.java:165) 
>>
>> at org.snmp4j.Snmp.listen(Snmp.java:390)
>> at 
>> yasen.snmp.tools.SnmpV2cGetNext.getValueFromOID(SnmpV2cGetNext.java:60)
>> at Test.main(Test.java:94)
>>
>>
>>
>>
>>
>>
>> Next is my code that use the SNMP class.
>>
>> for (int i = 0; i < portCrcList.size(); i++) {
>> PortCrc portCrc = (PortCrc) portCrcList.get(i);
>> Device dev = portCrc.getDevice();
>> SnmpV2cGetNext obj = new SnmpV2cGetNext(dev.getIp(), dev
>> .getSnmp_ro());
>> String c = null;
>> try {
>> c = obj.getValueFromOID("1.3.6.1.2.1.2.2.1.14."
>> + portCrc.getIfdesc());
>> } catch (IOException e) {
>> e.printStackTrace();
>> }
>> long crc = Long.parseLong(c.trim());
>>
>> System.out.println("ID: " + portCrc.getDev_id() + ", DevName: "
>> + portCrc.getDevname() + ", ifDesc: " + portCrc.getIfdesc()
>> + ", Port: " + portCrc.getPort() + ", CRC: " + crc);
>> }
>> }
>>
>>
>> And the SnmpV2cGetNext.java is:
>>
>>
>> public class SnmpV2cGetNext {
>>
>> TransportMapping transport;
>> Address targetAddress;
>> CommunityTarget target;
>> public SnmpV2cGetNext(String ip, String community){
>> try {
>> targetAddress = GenericAddress.parse("udp:" + ip + "/161");
>> transport = new DefaultUdpTransportMapping();
>> target = new CommunityTarget();
>> target.setCommunity(new OctetString(community));
>> target.setAddress(targetAddress);
>> target.setRetries(3);
>> target.setTimeout(2000);
>> target.setVersion(SnmpConstants.version2c);
>> } catch (IOException ex) {
>> java.util.logging.Logger.getLogger(SnmpV2cGetNext.class.getName()).log(java.util.logging.Level.SEVERE, 
>> null, ex);
>> }
>>
>> }
>> public String getValueFromOID( String oid) throws IOException{
>> PDU pdu = new PDU();
>> pdu.setType(PDU.GETNEXT);
>> pdu.add(new VariableBinding(new OID(oid)));
>> pdu.setNonRepeaters(0);
>> Snmp snmp = new Snmp(transport);
>> snmp.listen();
>> ResponseEvent responseEvent = snmp.send(pdu, target);
>> PDU responsePDU = responseEvent.getResponse();
>> VariableBinding var=new VariableBinding();
>> var=(VariableBinding) 
>> responsePDU.getVariableBindings().elements().nextElement();
>> return var.getVariable().toString();
>> }
>>
>> }
>>
>> If you have idea how can i avoid this Java heap overflow, please help 
>> me.
>>
>> Best regards,
>> Yasen
>>
>>
>
>
>
>
> __________ Information from ESET NOD32 Antivirus, version of virus 
> signature database 4254 (20090717) __________
>
> The message was checked by ESET NOD32 Antivirus.
>
> http://www.eset.com
>
>


-- 
Yasen Simeonov
Network Management Team
Neterra Ltd.
Sofia, Bulgaria
Phone:  +359 2 974 33 11
Fax:    +359 2 975 34 36
Mobile: +359 887 477 540
http://www.neterra.net



__________ Information from ESET NOD32 Antivirus, version of virus signature database 4254 (20090717) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com





More information about the SNMP4J mailing list