-1
for 루프에 다음 메소드가 있습니다. 나는 그 일을함으로써 누출 된 기억에 대해 우려하고 있습니다. 내 질문 : 루프에 대한 모든 루프 들어, 사실 그 newInstance()
메서드는 새 메모리 블록을 할당합니다? 그렇다면 VehicleImpl
인스턴스를 for 루프에 넣고이 VehicleImpl
인스턴스에 대한 새 값을 설정하려고 시도하기 전에 인스턴스를 만들어야합니다.newInsance() 메서드를 사용할 때 메모리 누수가 발생했습니다.
private List<VehicleImpl> setVehicles(JsonInput input) {
List<VehicleImpl> vehicles = new ArrayList<VehicleImpl>();
Break lunch = Break.Builder.newInstance("Lunch")
//timewindow(start time, end time), so lunch timewindow(start, start + duration)
.setTimeWindow(TimeWindow.newInstance(input.getLunch().getStart(),
input.getLunch().getStart() + input.getLunch().getDuration()))
//Lunch has highest priority
.setPriority(1)
//Lunch takes serviceTime
.setServiceTime(input.getLunch().getDuration())
.build();
VehicleType type = VehicleTypeImpl.Builder.newInstance("vehicleType")
.setCostPerDistance(input.getCosts().getCostPerMeter())
.setCostPerTransportTime(input.getCosts().getCostPerTransportSecond())
.setCostPerServiceTime(input.getCosts().getCostPerServiceTime())
.build();
for(int i = 0; i < input.getNoVehicles(); i++) {
//Name vehicle by index
VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle " + String.valueOf(i+1))
//The first location - depot location is indexed as 0 in Matrices
.setStartLocation(Location.newInstance(i))
.setBreak(lunch)
.setLatestArrival(input.getOperating())
.setType(type)
.build();
vehicles.add(vehicle);
}
return vehicles;
}
왜 예를 들어 newInstance()를 사용하는 대신에. '''새로운 Break.Builder ("Lunch")'''? – spi
@ S.Piller는 set 메소드가'new Break.Builder ("Lunch")' –