首先字符串拼接的會這麼寫:
logger.info("po = "+po.toString)
佔位符這麼寫:
logger.info(“po = {}”,po.toString)
對於佔位符的形式而言,只有在我們需要的時候纔會提取字符串,這樣就會避免創建string對象的時候消耗大量的資源。
因爲string對象是不可變的,所以會消耗大量的堆內存,即使我們的生產環境輸出的error級別的日誌,那拼接字符串的形式還會有大量的字符串對象佔用內存,但是當我們用佔位符的時候,只有在用到的時候纔會動態的創建
簡而言之:
佔位符的形式會延遲字符串的創建到需要他的時候;
而字符串拼接會在一開始就佔用大量內存