2012-02-03 5 views
-4

컨텍스트 : Java EE 5클래스, 원시 데이터 유형 및 문자열에 대한 Java EE 5의 메모리 사용 공간 최소화

나는 거대한 응용 프로그램을 실행하는 서버를 가지고 있습니다. 클래스를 리팩터링하여 CPU 사용 시간과 교환하여 메모리 사용량이 적게되도록 (가능한 한 가장 낮게) 필요합니다.

이미 비트 연산을 사용하여 여러 부울, 단락 또는 물기를 int로 채우는 방법을 알고 있습니다.

다른 최적화 아이디어가 필요합니다. 예를 들어 문자열로 무엇을 할 것인가, 어떤 컬렉션을 사용하는 것이 좋을지, 그리고 당신이 알고있는 모든 것을 생각해보십시오.

Thx, 너희들 규칙! 당신이 개체에 수행하는 경우

+1

목표에 대한 자세한 내용과 지금까지 수행 한 내용을 제공해야합니다. 공연에 관해서는, 당신은 측정이 필요하고, 당신이 사물을 조정할 필요가있는 곳을 추측하지 마십시오. VisualVM을 사용하여 간단한 메모리 프로파일 링이나 YourKit과 같은 상용 도구를 사용할 수 있습니다. – SteveD

+0

그게 뭐야. 나는 메모리 사용을 일관되게 측정하는 방법을 모르거나 더 많은 정보를 제공한다. 어쨌든, 내가 지금까지 무엇을했는지 부울의 boolnean (대체하지만 (다시 singleton 인스턴스를 사용하여 부울로 전환 생각하고 있어요.) 또한 바이트 배열 및 정수 날짜 문자열 변환했습니다. 분명히 비록 사람들은 멍청한 놈들을 좋아합니다 .... –

답변

2

memory efficiency in java에 관한이 PDF는 사용자에게 유용 할 수 있습니다.

특히 표준 컬렉션은 거대한 메모리 낭비 인 것 같습니다. 그러나 마이크로 최적화를 수행하기 전에 첫 번째 단계는 응용 프로그램을 프로파일 링하고 힙 덤프를 작성한 후이를 분석하는 것입니다.

+0

+1 : 멋진 리소스, 공유를위한 thnx – posdef

1

몇 가지가

  • 을 고려하고 (당신이 스레드 안전을 필요로하는 경우 또는 StringBuffer를) 대신 을, 범위에 남아
  • 사용하여 StringBuilder를 null로 설정됩니다 연결 문자열의.

그러나 메모리 사용량이 이러한 문제 일 경우 코드에 대한 아키텍처 문제 일 수 있습니다.