로드 - 테스트하려고하는 서버 구성 요소가 있습니다. 서버에 대한 모든 연결은 TLS 1.0을 사용합니다. 다음과 같이Sun의 Java SSL 구현에서 메모리 누수가 발생합니까?
Full TLS handshake to the server
send a request
read reply
close connection
repeat ad nauseam
내 가상 머신은 다음과 같습니다 :
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) Server VM (build 14.2-b01, mixed mode)
내가 메모리 누수가 내가 원하는대로 본질적으로 많은 스레드에서이 작업을 수행하는 간단한 테스트 프로그램이 있습니다. 내 서버를 많이 테스트 할 때 초당 약 1MB의 메모리 사용량이 증가하여 OutOfMemoryException
으로 15-20 분 후에 차단됩니다.
Netbean의 프로파일 러에서 실행하여 TLS API 내에서 메모리 증가가 심한 것으로 나타났습니다.
비슷한 경험을 한 사람이 있습니까? 내 수준에서 구현할 수있는 해결 방법이 있습니까?
편집.
.java.io.ByteArrayOutputStream.<init>(int)
..com.sun.net.ssl.internal.ssl.OutputRecord.<init>(byte, int)
...com.sun.net.ssl.internal.ssl.OutputRecord.<init>(byte)
....com.sun.net.ssl.internal.ssl.AppOutputStream.<init>(com.sun.net.ssl.internal.ssl.SSLSocketImpl)
.....com.sun.net.ssl.internal.ssl.SSLSocketImpl.init(com.sun.net.ssl.internal.ssl.SSLContextImpl, boolean)
......com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(com.sun.net.ssl.internal.ssl.SSLContextImpl, java.net.Socket, String, int, boolean)
.......com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(java.net.Socket, String, int, boolean)
<my code>
보다 내가 넣을 수 있습니다 많은 ...이 긴 것 같습니다 요청으로, 여기에이 바이트 []를 많이 생성하는 프로파일 호출 추적입니다. 프로파일 러가 저를 준다 당신에게 진입 점을 말해주지 :
....com.sun.net.ssl.internal.ssl.AppOutputStream.<init>(com.sun.net.ssl.internal.ssl.SSLSocketImpl)
....com.sun.net.ssl.internal.ssl.HandshakeOutStream.<init>(com.sun.net.ssl.internal.ssl.ProtocolVersion, com.sun.net.ssl.internal.ssl.ProtocolVersion, com.sun.net.ssl.internal.ssl.HandshakeHash, com.sun.net.ssl.internal.ssl.SSLSocketImpl)
....com.sun.net.ssl.internal.ssl.SSLSocketImpl.sendAlert(byte, byte)
..com.sun.net.ssl.internal.ssl.AppInputStream.<init>(com.sun.net.ssl.internal.ssl.SSLSocketImpl)
..com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake()
..com.sun.net.ssl.internal.ssl.HandshakeInStream.<init>(com.sun.net.ssl.internal.ssl.HandshakeHash)
좀 더 구체적인 프로파일 링 결과를 제공 할 수 있습니까? 누수가 반드시 TLS에서 나오는 것은 아니며 코드에있을 수도 있습니다. –
이 동작을 나타내는 가능한 가장 작은 프로그램을 만들어 질문에 추가하십시오. –