Java heap memory does not make up 100-percent of a JVM process’s memory
allocation. There are many categories of non-heap memory in a JVM process
that often account for more RAM than the heap when they are summed up. It’s possible to set your maximum heap size to 512 MB, -Xmx512m, and have your process consume more than 1 gigabyte of RAM
The ./gradlew build command should produce the exact same output each time you run it–even when
you run it on someone else’s computer. But the use of dependency version ranges in Gradle
makes it possible for ./gradlew build to resolve different versions of dependencies
during each execution, which makes the output of your builds unpredictable.
The Heroku Java Agent
is a lightweight tool you can attach to a running Java process to log
heap and non-heap memory usage. It is a simple, but powerful reporting
mechanism that can provide essential information at critical moments.
Java apps have traditionally managed TrustStores and KeyStores as regular files on the filesystem in JKS format with keytool.
This mechanism was fine when the state-of-the-art in system administration required copying files from server to server.
But in the era of the cloud, our apps need a better system.
A flurry of security vulnerabilities
in the last couple of years have accelerated the deprecation of many
cryptographic protocols and cipher suites. As a result, you might have run into this error if you use JRuby:
The PostgreSQL JDBC Driver defaults to using an unencrypted connection.
At Heroku, this presented a problem when
we decided to move certain database types to dedicated single-tenant instances. Our hope was to improve
performance for our customers without them needing to change a single line of code. But the new database instances
required an SSL connection, which meant our customers would need to adjust their database configuration before we
could migrate them.
In this article, you’ll create a simple ClojureScript application with Leiningen, Figwheel, Om and a few other libraries from the Chestnut template. Then you’ll learn how to deploy that application as an Uberjar to Heroku.
In this post, you’ll learn how to deploy a Docker-based Gradle application to Heroku using the Heroku Docker CLI. We’ll use a simple Ratpack app as an example, but you can follow along with any Gradle application. This is a Mac and Linux guide only (until Docker supports docker-compose on Windows).
In this post, you’ll learn how to deploy a Docker-based Clojure application to Heroku using the Heroku Docker CLI. We’ll use the Immutant Feature Demo as an example, but you can follow along with any Clojure application as long as it uses Leiningen to build an uberjar. This is a Mac and Linux guide only (until Docker supports docker-compose on Windows).