5.29
一、JVM 参数优化
配置 JVM 参数提升应用性能:
bash
推荐的JVM启动参数
java -Xms512m -Xmx1024m
-XX:MetaspaceSize=128m
-XX:MaxMetaspaceSize=256m
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/log/app/heapdump.hprof
-jar your-application.jar
二、数据库查询优化
优化复杂 SQL 查询:
java
// 优化前的查询方法
@Repository
public interface OrderRepository extends JpaRepository<Order, Long> {
@Query("SELECT o FROM Order o JOIN FETCH o.items WHERE o.customerId = :customerId")
List
}
// 优化后的查询方法(分页+批量加载)
@Repository
public interface OrderRepository extends JpaRepository<Order, Long> {
@Query("SELECT o FROM Order o WHERE o.customerId = :customerId")
Page
@Query("SELECT i FROM OrderItem i WHERE i.order.id IN :orderIds")
List<OrderItem> findItemsByOrderIds(@Param("orderIds") List<Long> orderIds);
}
// 批量加载逻辑
public List
Page
List
if (!orders.isEmpty()) {
List<Long> orderIds = orders.stream().map(Order::getId).collect(Collectors.toList());
List<OrderItem> items = orderRepository.findItemsByOrderIds(orderIds);
// 关联订单和订单项
Map<Long, List<OrderItem>> itemsMap = items.stream()
.collect(Collectors.groupingBy(item -> item.getOrder().getId()));
orders.forEach(order -> order.setItems(itemsMap.getOrDefault(order.getId(), Collections.emptyList())));
}
return orders;
}

浙公网安备 33010602011771号