私は新しいPOJOをインスタンス化するスプリングレストコントローラを持っています。このPOJOは、DBからXMLオブジェクトを逆シリアル化するために使用されます。スプリングブート - 私のRestcontrollerが新しいPOJOへの参照を解放しないのはなぜですか?
私はIDEAのMemory Viewプラグインを気づきました。私のアプリケーションの存続期間中、コントローラオブジェクトは1つしか作成されませんが(期待どおり)、コントローラーへのリクエストごとに新しいPOJOインスタンスが作成され、要求が完了した後。
メモリ不足の例外が発生しています。
これを解決するにはどうすればよいでしょうか?このコードで
@RestController
public class VendorController {
private ChuckNorris chuckNorris;
@RequestMapping("/vendor")
public String vendors() {
ChuckNorris chuckNorris = new ChuckNorris();
chuckNorris.setType("roundhouse");
return "test";
}
}
、すべての要求は、新たなチャック・ノリスオブジェクトを作成し、アプリケーションが終了するまで、彼らはメモリにたむろ。
私の実際の例では、コントローラはAutowiredサービスコンポーネントを呼び出します。 POJOを実際に作成し、別のAutowiredサービスを呼び出してそのPOJOを生成します。 しかし、完全なhttp要求/応答を完了してから別のhttp要求を実行すると、最初のPOJOはまだメモリ内に残ります。 サービスコンポーネントはすべてのリクエストに対して新しいPOJOを作成しますが、それに対する参照を解放することはありません。 – Faxy