{"id":249,"date":"2009-02-04T14:51:47","date_gmt":"2009-02-04T17:51:47","guid":{"rendered":"https:\/\/devkico.itexto.com.br\/?p=249"},"modified":"2009-02-04T14:51:47","modified_gmt":"2009-02-04T17:51:47","slug":"jexcel-comendo-sua-memoria-facil-de-resolver","status":"publish","type":"post","link":"https:\/\/devkico.itexto.com.br\/?p=249","title":{"rendered":"JExcel comendo sua mem\u00f3ria? F\u00e1cil de resolver!"},"content":{"rendered":"<p>Eis o problema: voc\u00ea precisa gerar uma planilha gigantesca usando o <a href=\"http:\/\/jexcelapi.sourceforge.net\/\" target=\"_blank\">JExcel <\/a>e eis que de repente&#8230; BOOM! Um OutOfMemoryError ocorre salta em sua dire\u00e7\u00e3o.<\/p>\n<p>(Devo confessar: adoro esta biblioteca. Apesar de n\u00e3o ser t\u00e3o abrangente quanto eu gostaria (n\u00e3o inclui gr\u00e1ficos), \u00e9 simples o suficiente para que at\u00e9 um macaco consiga gerar arquivos no formato Excel sem problemas muito s\u00e9rios. Mas problemas existem: e estouro de mem\u00f3ria \u00e9 um deles)<\/p>\n<p>A solu\u00e7\u00e3o \u00e9 simples, e repousa na classe jxl.WorkbookSettings. Basicamente, consiste em dois m\u00e9todos presentes na classe: se o seu problema de mem\u00f3ria vier na hora de gerar uma planilha, utilize o c\u00f3digo abaixo:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\njxl.WorkbookSettings settings = new jxl.WorkbookSettings();\r\nsettings.setUseTemporaryFileDuringWrite(true);\r\n\r\n<\/pre>\n<p>Voc\u00ea ir\u00e1 instruir a biblioteca a utilizar um arquivo tempor\u00e1rio no momento de gera\u00e7\u00e3o da planilha. Caso seja definido como false (que \u00e9 o default), todo o conte\u00fado do documento ser\u00e1 armazenado em mem\u00f3ria, levando ao famigerado OutOfMemoryError. H\u00e1 perda de performance? Claro, mas \u00e9 melhor esperar um pouco mais pelo resultado do que simplesmente nada ser gerado, n\u00e3o acha?<\/p>\n<p>Se o seu problema dizer respeito \u00e0 leitura de documentos, o c\u00f3digo abaixo poder\u00e1 resolver seu problema tamb\u00e9m:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\njxl.WorkbookSettings settings = new jxl.WorkbookSettings();\r\nsettings.setInitialFileSize( tamanho em bytes );\r\n\r\n<\/pre>\n<p>A segunda instru\u00e7\u00e3o diz ao jxl qual a quantidade de mem\u00f3ria a ser inicialmente alocada para a leitura do arquivo. Lhe trar\u00e1 problemas de performance? Talvez: depende do tamanho que voc\u00ea especifique. Por padr\u00e3o (como pude ver no c\u00f3digo fonte), a mem\u00f3ria alocada \u00e9 de 1 Mb.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eis o problema: voc\u00ea precisa gerar uma planilha gigantesca usando o JExcel e eis que de repente&#8230; BOOM! Um OutOfMemoryError ocorre salta em sua dire\u00e7\u00e3o. (Devo confessar: adoro esta biblioteca. Apesar de n\u00e3o ser t\u00e3o abrangente quanto eu gostaria (n\u00e3o inclui gr\u00e1ficos), \u00e9 simples o suficiente para que at\u00e9 um macaco consiga gerar arquivos no [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[31,6,32],"tags":[],"class_list":["post-249","post","type-post","status-publish","format-standard","hentry","category-excel","category-java","category-jexcel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JExcel comendo sua mem\u00f3ria? F\u00e1cil de resolver! - \/dev\/Kico<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devkico.itexto.com.br\/?p=249\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JExcel comendo sua mem\u00f3ria? F\u00e1cil de resolver! - \/dev\/Kico\" \/>\n<meta property=\"og:description\" content=\"Eis o problema: voc\u00ea precisa gerar uma planilha gigantesca usando o JExcel e eis que de repente&#8230; BOOM! Um OutOfMemoryError ocorre salta em sua dire\u00e7\u00e3o. (Devo confessar: adoro esta biblioteca. Apesar de n\u00e3o ser t\u00e3o abrangente quanto eu gostaria (n\u00e3o inclui gr\u00e1ficos), \u00e9 simples o suficiente para que at\u00e9 um macaco consiga gerar arquivos no [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devkico.itexto.com.br\/?p=249\" \/>\n<meta property=\"og:site_name\" content=\"\/dev\/Kico\" \/>\n<meta property=\"article:published_time\" content=\"2009-02-04T17:51:47+00:00\" \/>\n<meta name=\"author\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@loboweissmann\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=249\",\"url\":\"https:\/\/devkico.itexto.com.br\/?p=249\",\"name\":\"JExcel comendo sua mem\u00f3ria? F\u00e1cil de resolver! - \/dev\/Kico\",\"isPartOf\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\"},\"datePublished\":\"2009-02-04T17:51:47+00:00\",\"dateModified\":\"2009-02-04T17:51:47+00:00\",\"author\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=249#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devkico.itexto.com.br\/?p=249\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=249#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devkico.itexto.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JExcel comendo sua mem\u00f3ria? F\u00e1cil de resolver!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\",\"url\":\"https:\/\/devkico.itexto.com.br\/\",\"name\":\"\/dev\/Kico\",\"description\":\"Desenvolvendo software\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/devkico.itexto.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\",\"name\":\"Kico (Henrique Lobo Weissmann)\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"caption\":\"Kico (Henrique Lobo Weissmann)\"},\"sameAs\":[\"https:\/\/x.com\/loboweissmann\"],\"url\":\"https:\/\/devkico.itexto.com.br\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JExcel comendo sua mem\u00f3ria? F\u00e1cil de resolver! - \/dev\/Kico","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/devkico.itexto.com.br\/?p=249","og_locale":"pt_BR","og_type":"article","og_title":"JExcel comendo sua mem\u00f3ria? F\u00e1cil de resolver! - \/dev\/Kico","og_description":"Eis o problema: voc\u00ea precisa gerar uma planilha gigantesca usando o JExcel e eis que de repente&#8230; BOOM! Um OutOfMemoryError ocorre salta em sua dire\u00e7\u00e3o. (Devo confessar: adoro esta biblioteca. Apesar de n\u00e3o ser t\u00e3o abrangente quanto eu gostaria (n\u00e3o inclui gr\u00e1ficos), \u00e9 simples o suficiente para que at\u00e9 um macaco consiga gerar arquivos no [&hellip;]","og_url":"https:\/\/devkico.itexto.com.br\/?p=249","og_site_name":"\/dev\/Kico","article_published_time":"2009-02-04T17:51:47+00:00","author":"Kico (Henrique Lobo Weissmann)","twitter_card":"summary_large_image","twitter_creator":"@loboweissmann","twitter_misc":{"Escrito por":"Kico (Henrique Lobo Weissmann)","Est. tempo de leitura":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devkico.itexto.com.br\/?p=249","url":"https:\/\/devkico.itexto.com.br\/?p=249","name":"JExcel comendo sua mem\u00f3ria? F\u00e1cil de resolver! - \/dev\/Kico","isPartOf":{"@id":"https:\/\/devkico.itexto.com.br\/#website"},"datePublished":"2009-02-04T17:51:47+00:00","dateModified":"2009-02-04T17:51:47+00:00","author":{"@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7"},"breadcrumb":{"@id":"https:\/\/devkico.itexto.com.br\/?p=249#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devkico.itexto.com.br\/?p=249"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/devkico.itexto.com.br\/?p=249#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devkico.itexto.com.br\/"},{"@type":"ListItem","position":2,"name":"JExcel comendo sua mem\u00f3ria? F\u00e1cil de resolver!"}]},{"@type":"WebSite","@id":"https:\/\/devkico.itexto.com.br\/#website","url":"https:\/\/devkico.itexto.com.br\/","name":"\/dev\/Kico","description":"Desenvolvendo software","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devkico.itexto.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7","name":"Kico (Henrique Lobo Weissmann)","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","caption":"Kico (Henrique Lobo Weissmann)"},"sameAs":["https:\/\/x.com\/loboweissmann"],"url":"https:\/\/devkico.itexto.com.br\/?author=1"}]}},"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/249"}],"collection":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=249"}],"version-history":[{"count":1,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/249\/revisions"}],"predecessor-version":[{"id":250,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/249\/revisions\/250"}],"wp:attachment":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}