1. new 키워드를 사용하지 않고 클래스 인스턴스 생성
new 키워드를 사용하여 클래스의 인스턴스를 생성하면 생성자 체인의 모든 생성자가 자동으로 호출됩니다. 그러나 객체가 Cloneable 인터페이스를 구현하는 경우 해당 clone() 메서드를 호출할 수 있습니다. clone() 메서드는 클래스 생성자를 호출하지 않습니다. Factory 패턴을 사용하여 객체를 생성하는 경우 clone() 메서드를 사용하여 새 객체 인스턴스를 생성하는 것은 매우 간단합니다.
2. 변수를 반복적으로 초기화하지 마십시오
기본적으로 Java는 클래스 생성자가 호출될 때 변수를 특정 값으로 초기화합니다. 클래스가 다른 클래스에서 파생될 때 특히 주의해야 합니다. 왜냐하면 new 키워드를 사용하여 객체가 생성되면 생성자 체인의 모든 생성자가 자동으로 호출되기 때문입니다.
3. 예외는 주의해서 사용하세요
예외는 성능에 좋지 않습니다. 먼저 예외를 발생시키면 새 객체가 생성됩니다. Throwable 인터페이스의 생성자는 fillInStackTrace()라는 기본 메서드를 호출합니다. fillInStackTrace() 메서드는 스택을 확인하고 호출 추적 정보를 수집합니다. 예외가 발생할 때마다 처리 중에 새 객체가 생성되므로 jVM은 호출 스택을 조정해야 합니다. 예외는 오류 처리에만 사용해야 하며 프로그램 흐름을 제어하는 데 사용해서는 안 됩니다.
다음 두 가지 사항에 주의하세요. (1) 응용 프로그램 논리에 try/catch를 사용하지 마십시오. if 및 while과 같은 논리 문으로 처리할 수 있으면 try/catch 문을 최대한 사용하지 마십시오. (2) 예외 처리가 필요한 경우 예외를 재사용하십시오. , 기존 예외 객체를 최대한 재사용하세요. 예외 처리에서는 예외 개체를 생성하는 데 대부분의 시간이 소요됩니다.
4. 실
스레드는 시스템 리소스를 최대한 활용할 수 있습니다. 다른 스레드가 하드 디스크 또는 네트워크 읽기 및 쓰기를 기다리는 동안 프로그램은 계속 처리하고 실행할 수 있습니다. 그러나 스레드를 부적절하게 사용하면 프로그램 성능에도 영향을 미칩니다. 예: Vector 클래스를 올바르게 사용하십시오. 벡터는 주로 다양한 유형의 객체(동일 유형 및 다른 유형의 객체 포함)를 저장하는 데 사용됩니다. 벡터는 스레드 안전 보호 기능을 제공합니다. Vector 클래스의 많은 메소드가 동기화되는 경우에도 마찬가지입니다. 그러나 애플리케이션이 단일 스레드임을 확인한 경우 이러한 메서드의 동기화는 전혀 필요하지 않습니다. 또한, Vector에 저장된 다양한 객체를 검색할 때, 유형을 일치시키는 데 많은 시간이 걸리는 경우가 많습니다. 이러한 개체가 모두 동일한 유형인 경우 이러한 일치는 전혀 필요하지 않습니다. 따라서 Vector 클래스를 대체하려면 특정 유형의 개체를 저장하는 단일 스레드 클래스 또는 컬렉션을 설계해야 합니다.
스레드 작업과 관련하여 다음 사항에 유의하십시오. (1) 과도한 동기화를 방지하십시오. 프로그램이 단일 스레드인 경우 동기화를 사용하지 마십시오. (2) 전체 코드 세그먼트를 동기화하는 대신 메소드를 동기화하는 것이 전체 코드 세그먼트를 동기화하는 것보다 성능이 더 좋습니다.
5. 지역 변수를 사용해 보세요
메소드 호출 시 전달된 파라미터와 호출 시 생성된 임시 변수는 스택(Stack)에 저장되므로 속도가 더 빠릅니다.
6. 정적 변수를 최대한 사용하세요
모든 인스턴스가 이 변수를 공유하도록 합니다.
7. 클래스의 최종 수정자를 지정해 보세요.
final 수정자가 있는 클래스는 파생되지 않습니다. java.lang.String에서 String 클래스에 final을 지정하면 사람들이 length() 메서드를 재정의하는 것을 방지할 수 있습니다. 또한 클래스가 final로 지정되면 해당 클래스의 모든 메서드가 final이 됩니다. Java 컴파일러는 평균 50% 성능을 향상시킬 수 있는 모든 최종 메소드를 인라인할 수 있는 기회를 찾습니다.
8. 객체 생성 및 합리적인 공간과 크기 할당
JAVA 프로그래밍에서는 많은 수의 객체(또는 인스턴스)가 생성되는 경우가 많습니다. 시스템이 객체를 생성하는 데 시간이 걸릴 뿐만 아니라 나중에 이러한 객체를 가비지 수집하고 처리하는 데에도 시간이 걸릴 수 있습니다. 따라서 너무 많은 객체를 생성하면 프로그램 성능에 큰 영향을 미치게 됩니다. 또한 JAVA의 많은 클래스에는 기본 공간 할당 크기가 있습니다. StringBuffer 클래스의 경우 기본 할당 공간 크기는 16자입니다. 프로그램에서 사용하는 StringBuffer의 공간 크기가 16자가 아닌 경우 올바른 초기화를 수행해야 합니다.
9. 비차단 I/O를 사용하라
낮은 버전의 JDK는 비차단 I/O API를 지원하지 않습니다. I/O 차단을 방지하기 위해 일부 응용 프로그램은 많은 수의 스레드를 생성합니다(더 나은 경우에는 버퍼 풀이 사용됩니다). 이 기술은 웹 서버와 같이 동시 I/O 스트림을 지원해야 하는 많은 애플리케이션에서 볼 수 있습니다. JDK 1.4에는 비차단 I/O 라이브러리(java.nio)가 도입되었습니다.
이 기사는 CSDN 블로그에서 가져온 것입니다. 재인쇄할 때 출처를 표시하십시오: http://blog.csdn.net/Foxalien/archive/2009/12/18/5029659.aspx